Peter Dalgaard <p.dalgaard@biostat.ku.dk> writes:
"Gabor Grothendieck" <ggrothendieck@myway.com> writes:
as.character(attr(terms(`a(b)`~`c(d)`),"variables"))
[1] "list" "`a(b)`" "`c(d)`"
whereas for instance
sapply(attr(terms(`a(b)`~`c(d)`),"variables")[-1],as.character)
1. That is quite subtle but a fix based on that would appear to
solve it.
Hmm, not quite. I tried, and terms like offset(foo) gets me in
trouble. Probably, I was fixing the wrong end of the original problem:
In the comparisons, we can't have one side with backquotes and the
other without them. That doesn't have to mean that they should be
removed from both sides, and indeed it would get us in trouble if
someone was perverse enough to do things like
y ~ `offset(foo)` + offset(foo)
I.e. perhaps the real issue is that names(data) gets generated without
backquotes.
Anyways, this is a real can of worms and I'm not sure we're not too
close to 2.0.0 to start tampering with it...
How about a partial fix that does not address pathological
cases where the variable names themselves have embedded
backquotes but does address the common cases such as:
y <- ts(1:10); x1 <- y^2; x2 <- y^4
lm(`lag(y)` ~ ., cbind(lag(y), x1, diff(x2)) )
without having to resort to:
lm(lag.y ~ ., cbind(lag.y = lag(y), x1, diff(x2)) )