Re: [Rd] model.matrix.default chokes on backquote (PR#7202)

From: Gabor Grothendieck <ggrothendieck_at_myway.com>
Date: Mon 30 Aug 2004 - 11:35:21 EST

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] "a(b)" "c(d)"
> >
> > 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)) )



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Mon Aug 30 11:39:26 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:00:00 EST