Its a matter of where aov is looking for objects. Try replacing the av<- line in test.data.frame with the following which substitutes in the formula and then evaluates the statement (so that it does not have to look for it):
av <- eval(substitute(aov(fo, x), list(fo = formula(model)))) On Sun, Nov 23, 2008 at 10:53 AM, Enio Jelihovschi <[EMAIL PROTECTED]> wrote: > I WROTE THIS FUNCTION BELOW > > test <- function(x, ...) UseMethod('test', x) > > test.data.frame = function(x, model, which, error, ...) > { > av <- aov(formula(model), data = x) > res <- test.aovlist(av, which = which, error = error) > return(res) > } > > test.aovlist <- function(x, which, error, ...) > { > mm <- model.tables(x, "means") > tabs <- mm$tables[-1] > tabs <- tabs[which] > res <- list(av=x, which=which) > return(res) > } > > GENERETING DATA > > var <- sort(gl(3, 24, lab=c('Ladak', 'Cossack', 'Ranger'))) > man <- rep(gl(4, 6, lab=LETTERS[1:4]), 3) > sub <- rep(gl(4, 6), 3) > blo <- factor(rep(1:6, 12)) > y <- c(2.17, 1.88, 1.62, 2.34, 1.58, 1.66, > 1.58, 1.26, 1.22, 1.59, 1.25, 0.94, > 2.29, 1.60, 1.67, 1.91, 1.39, 1.12, > 2.23, 2.01, 1.82, 2.10, 1.66, 1.10, > 2.33, 2.01, 1.70, 1.78, 1.42, 1.35, > 1.38, 1.30, 1.85, 1.09, 1.13, 1.06, > 1.86, 1.70, 1.81, 1.54, 1.67, 0.88, > 2.27, 1.81, 2.01, 1.40, 1.31, 1.06, > 1.75, 1.95, 2.13, 1.78, 1.31, 1.30, > 1.52, 1.47, 1.80, 1.37, 1.01, 1.31, > 1.55, 1.61, 1.82, 1.56, 1.23, 1.13, > 1.56, 1.72, 1.99, 1.55, 1.51, 1.33) > dfm <- data.frame(var, sub, man, blo, y) > > te <- test(dfm, model = 'y ~ blo + man*var + Error(blo/var)', > which = 'man', error ='Within' ) > > THE RESULT AFTER TRYING TO RUN test IS : > Error in formula(model) : object "model" not found > > IF I TRY THIS WAY, AGAIN THE SAME ERROR > tes <- test.data.frame(dfm, model = 'y ~ blo + man*var + Error(blo/var)', > which = 'man', error ='Within' ) > Error in formula(model) : object "model" not found > > BUT, THAT WAY IT WORKS > av <- aov(formula('y ~ blo + man*var + Error(blo/var)'), data = dfm) > res <- test.aovlist(av, which = 'man', error ='Within') > > res > $av > > Call: > aov(formula = formula("y ~ blo + man*var + Error(blo/var)"), > data = dfm) > > Grand Mean: 1.596806 > > Stratum 1: blo > > Terms: > blo > Sum of Squares 4.149824 > Deg. of Freedom 5 > > Estimated effects may be unbalanced > > Stratum 2: blo:var > > Terms: > var Residuals > Sum of Squares 0.1780194 1.3623472 > Deg. of Freedom 2 10 > > Residual standard error: 0.3690999 > 6 out of 8 effects not estimable > Estimated effects may be unbalanced > > Stratum 3: Within > > Terms: > man man:var Residuals > Sum of Squares 1.9624708 0.2105583 1.2585458 > Deg. of Freedom 3 6 45 > > Residual standard error: 0.1672354 > Estimated effects may be unbalanced > > $which > [1] "man" > > I RUN THE TRACING THRU IT AND COULD FIND WHY IT DOES NOT WORK. THE PROBLEM > OCCURS IN THE FUNCTION 'model.tables.aovlist' BUT i CANNOT FIGURE IT OUT WHY > IT HAPPENS > MANY THANKS > > Enio Jelihovschi > Universidade Estadual de Santa Cruz > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > ______________________________________________ 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.