R version: 1.7.1 OS: Red Hat Linux 7.2 Hi all,
The formula object in model.frame() is not retrieved properly when model.frame() is called from within a function and the "subset" argument is supplied. foo <- function(formula,data,subset=NULL) { cat("\n*****Does formula[-3] == ~y ?**** TRUE *****\n") print(formula[-3] == ~y) cat("\n*****Result of model.frame() using formula[-3]**** FAIL *****\n") print(try(model.frame(formula[-3],data=data,subset=subset))) cat("\n*****Result of model.frame() using ~y**** WORKS *****\n") print(try(model.frame(~y,data=data,subset=subset))) } dat <- data.frame(y=c(5,25)) foo(y~1,dat) Curiously, if the "subset" argument is removed from the call to model.frame(), then the execution is successful in both cases. In ?model.frame, one can read: Variables in the formula, `subset' and in `...' are looked for first in `data' and then in the environment of `formula': see the help for `formula()' for further details. However, replacing the line subset <- eval(substitute(subset), data, env) by subset <- eval(substitute(subset), data, environment()) in model.frame.default() fixes this problem. I don't know if this correction would create more problems in other cases. Perhaps there is a better fix. Sincerely, Jerome Asselin -- Jerome Asselin (Jérôme), Statistical Analyst British Columbia Centre for Excellence in HIV/AIDS St. Paul's Hospital, 608 - 1081 Burrard Street Vancouver, British Columbia, CANADA V6Z 1Y6 Email: [EMAIL PROTECTED] Phone: 604 806-9112 Fax: 604 806-9044 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel