[R] manova() with a data frame

Michael Friendly friendly at yorku.ca
Sun Feb 15 19:56:34 CET 2004


I'm trying to learn to use manova(), and don't understand why none of 
the following work:

 > data(iris)
 > fit <- manova(~ Species, data=iris)
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
        incompatible dimensions
 > fit <- manova(iris[,1:4] ~ Species, data=iris)
Error in model.frame(formula, rownames, variables, varnames, extras, 
extranames,  :
        invalid variable type
 >
 > YY <- iris[,1:4]
 > species <- iris[,5]
 > fit <- manova(YY ~ species)
Error in model.frame(formula, rownames, variables, varnames, extras, 
extranames,  :
        invalid variable type

It does work if I coerce YY to a matrix:

 > fit <- manova(as.matrix(YY) ~ species)

But, ?manova gives no details, and just points to ?aov which says

     aov(formula, data = NULL, projections = FALSE, qr = TRUE,
         contrasts = NULL, ...)
 
Arguments:
 
 formula: A formula specifying the model.
 
    data: A data frame in which the variables specified in the formula
          will be found. If missing, the variables are searched for in
          the standard way.
   ...

If this is not a bug, perhaps the documentation needs to be  clearer.  
The only example for
manova() is found in  ?summary.manova.  (It would also help if 
model.frame returned
something to indicate which variable had an invalid type.)
 
-Michael

-- 
Michael Friendly     Email: friendly at yorku.ca 
Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    http://www.math.yorku.ca/SCS/friendly.html
Toronto, ONT  M3J 1P3 CANADA




More information about the R-help mailing list