我很抱歉没有提供足够的信息来正确访问问题。无论如何,我想比较不同的线性模型对并将它们的p值记录到表中。我的麻烦在于我无法仅提取p值。
TC <- matrix(data=NA, nrow=1, ncol=6)
ML5 <- 1:5
for(B in ML5) {
Coop <- anova(M6,Models5[[B]])$"Pr(>F)"
TC[1,B] <- Coop
}
>Coop
NA 2.041767e-05
那么我怎么只将数字放入表格而不是NA进入表格?
万分感谢!
答案 0 :(得分:6)
你只需要引号:
pvalue <- anova(m2,m1)$"Pr(>F)"
您可以使用普通括号子集访问pvalue的第二个元素:
pvalue[2]
因此,在您的示例中,我相信您将使用
Coop <- anova(M6,Models5[[B]])$"Pr(>F)"[2]
(虽然无法访问M6,但我无法完全确定。)
str
命令在这种情况下非常有用,可以找出你正在处理的对象类型:
str(myanova$"Pr(>F)")
答案 1 :(得分:0)
使用来自R的mtcars
数据(我更喜欢@Drew Steen建议的解决方案)
myanova<-anova(lm(mpg~cyl,mtcars),lm(mpg~cyl+disp,mtcars))
pval<-summary(myanova)[1,6]
根据问题更新:
models1<-lm(mpg~cyl,mtcars)
models2<-list(lm(mpg~cyl+disp,mtcars),lm(mpg~cyl+disp+hp,mtcars),lm(mpg~cyl+disp+hp+drat,mtcars))
myp1<-lapply(models2,function(x) anova(models1,x))
myp2<-lapply(myp1,function(x)summary(x)[1,6])
> myp3
[1] " 0.05419 " " 0.09891 " " 0.09661 "
添加:如果您使用“$”Pr(&gt; F)“
myp2<-lapply(myp1,function(x)x$"Pr(>F)")
myp3<-sapply(myp2,function(x) as.data.frame(x)[2,1])
> myp3
[1] 0.05418572 0.09891469 0.09661222
答案 2 :(得分:0)
使用aov():
anova_a <- aov(response ~ time + Error(subject), data = all_data)
f_value <- unlist(summary(anova_a)[[2]])[9]