2014-02-20 78 views
1

我正在嘗試使用以下代碼運行邊際(也稱爲III型)ANOVA。不幸的是,我得到「錯誤:$運算符對原子向量無效」。谷歌搜索出現了另一個人得到相同的錯誤(see here),但不幸的是沒有解決方案。R中的邊際方差分析測試

rm(list = ls()) 

data(iris) 

iris.lm <- lm(formula = Sepal.Length ~ Sepal.Width + Petal.Length , data = iris) 
print(anova(object = iris.lm)) 
print(anova(object = iris.lm , type = "marginal")) 
+1

也許你有這個與'nlme :: anova.lme'混淆? – rawr

回答

3

供將來參考,從car接受type參數(如"III"3)包中的功能Anova。此功能不應與標準R庫中的功能anova混淆,該功能不支持type參數。

+2

所以真的這個問題的答案是,海報希望從'cars'包中使用'Anova()',而不是'從基地使用'anova()'。我也犯了這個錯誤!能夠碰到這個評論很棒,因爲我覺得這可能發生很多! – duHaas

2

使用traceback你可以本地化錯誤:

print(anova(object = iris.lm , type = "marginal")) 
Error: $ operator is invalid for atomic vectors 
> traceback() 
7: deparse(x$terms[[2L]]) 
6: FUN(X[[2L]], ...) 
5: lapply(objects, function(x) deparse(x$terms[[2L]])) 
4: anova.lmlist(object, ...) 
3: anova.lm(object = iris.lm, type = "marginal") 
2: anova(object = iris.lm, type = "marginal") 
1: print(anova(object = iris.lm, type = "marginal")) 

,是因爲你試圖調用terms一個對象,它不支持它在你的錯誤。此重現錯誤:

lapply(list(iris.lm,type='marginal'),terms) 
Error: $ operator is invalid for atomic vectors 

或者只是:

terms('marginal') 

但是你爲什麼想到,這個工程?也許我會錯過一些東西,但我認爲沒有提到anova可以拿type作爲論據。