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

Gabor Grothendieck ggrothendieck at myway.com
Sat Aug 28 06:26:52 CEST 2004



Sorry, but my solution itself had a shortcoming.  The $ at the
end of the regular expression is missing and gsub can simply be
sub.  Here it is again:

     strip.backquote <- function(x) sub("^`(.*)`$", "\\1", x)
     reorder <- match(strip.backquote(attr(t, "variables"))[-1],
               strip.backquote(names(data)))



Full_Name: Gabor Grothendieck
Version: R version 1.9.1, 2004-08-03
OS: Windows XP
Submission from: (NULL) (207.35.143.52)



The following gives an error:

     > `a(b)` <- 1:4
     > `c(d)` <- (1:4)^2
     > lm(`a(b)` ~ `c(d)`)
     Error in model.matrix.default(mt, mf, contrasts) :
     model frame and formula mismatch in model.matrix()

To fix it replace this line in model.matrix.default:

     reorder <- match(attr(t, "variables")[-1], names(data))

with these two lines:

     strip.backquote <- function(x) gsub("^`(.*)`", "\\1", x)
     reorder <- match(strip.backquote(attr(t, "variables"))[-1],
               strip.backquote(names(data)))



More information about the R-devel mailing list