The error message actually is

Error in inherits(object, "formula") : object 'frmlc' not found

and it is the omitted-by-you part after the colon that matters: the body of model.tables does not have 'frmlc' in its scope.

Here is one approach to using dynamic formulae that works in a lot of similar situations:

test <- function(dat) {
    frmlc <- as.formula("yield ~ block + Error(N/block)")
    aovfit <- eval(substitute(aov(form, dat),list(form=frmlc)))
    model.tables(aovfit, "means")
}

written without the pointless empty statements after the semicolons.


On Fri, 23 Jul 2010, Hannes wrote:

Hello,

I noticed that model.tables fails when applied to an aov() fit if called inside a function. The problem seems to occur when as.formula is used inside a function on a string containing
"<formula> + Error( x / y )"

The reason I tried to use as.formula is to generate dynamic calls to aov().
Here is a minimal example illustrating the problem:

## Example

test <- function(dat) {
   frmlb <- "yield ~ block";                    # WORKS
   aovfit <- aov(as.formula(frmlb), dat);
   print(model.tables(aovfit, "means"));

   frmlc <- "yield ~ block + Error(N/block)";   # DOES NOT WORK
   aovfit <- aov(as.formula(frmlc), dat);
   print(model.tables(aovfit, "means"));
}

utils::data(npk, package="MASS");
frmla <- "yield ~ block + Error(N/block)";       # WORKS
aovfit <- aov(as.formula(frmla), npk);
print(model.tables(aovfit, "means"));
test(npk);

## End of example


Output of sessionInfo():
R version 2.11.1 (2010-05-31)
i386-pc-mingw32

locale:
[1] LC_COLLATE=Finnish_Finland.1252  LC_CTYPE=Finnish_Finland.1252
[3] LC_MONETARY=Finnish_Finland.1252 LC_NUMERIC=C
[5] LC_TIME=Finnish_Finland.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] tools_2.11.1

br Hannes G.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


--
Brian D. Ripley,                  rip...@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to