我正在尝试使用以下代码运行边缘(也称为类型III)ANOVA。不幸的是,我得到“错误:$运算符对原子向量无效”。谷歌搜索发现另一个人得到同样的错误(see here),但遗憾的是没有解决方案。
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"))
答案 0 :(得分:3)
为了将来参考,包Anova
中的函数car
接受type
参数(例如"III"
或3
)。不要将此函数与标准anova
库中的函数R
混淆,后者不接受type
参数。
答案 1 :(得分: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
作为一个论点。