A user reported a problem with the survdiff function and the use of variables that contain a space.  Here is a simple example.  The same issue occurs in survfit for the same reason.

lung2 <- lung
names(lung2)[1] <- "in st"   # old name is inst
survdiff(Surv(time, status) ~ `in st`, data=lung2)
Error in `[.data.frame`(m, ll) : undefined columns selected

In the body of the code the program want to send all of the right-hand side variables forward to the strata() function.  The code looks more or less like this, where m is the model frame

  Terms <- terms(m)
  index <- attr(Terms, "term.labels")
  if (length(index) ==0)  X <- rep(1L, n)  # no coariates
  else X <- strata(m[index])

For the variable with a space in the name the term.label is "`in st`", and the subscript fails.

Is this intended behaviour or a bug?  The issue is that the name of this column in the model frame does not have the backtics, while the terms structure does have them.

Terry T.

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to