首页 > 解决方案 > 无法使用 tidy 从 aov 中获得额外的 p 值

问题描述

我正在使用这个 R- 一种方法 anova 提取 p_value 但失败了......

所以这是我的代码:

anova_sink<-c("a","b","c","d")
aov_result<-vector()
p_result<-vector()
for(i in 1:(length(anova_sink))){
  aov_result[i]<-aov(as.formula(paste("value","~",anova_sink[i])),df)
  p_result[i]<-tidy(aov_result[i])$p.value

}

这返回错误

Error: No tidy method recognized for this list.

但根据

https://rdrr.io/cran/broom/man/tidy.aov.html

应该没问题。

我真的不知道为什么...

老实说,在这一点上,我的问题已经通过从 aov 中提取 p-value解决了,但是,我仍然想知道为什么其他方法失败了。

标签: ranovabroom

解决方案


您需要使用双括号(见this)来访问列表的元素,所以它应该是:

tidy(aov_result[[i]])

aov_result[[i]]

下面是一个示例数据集:

set.seed(111)
df = data.frame(matrix(rnorm(100),ncol=5))
colnames(df) = c("a","b","c","d","value")

然后我们运行您更正的代码,注意我们从 out 获得第一个 p.value tidy()

anova_sink<-c("a","b","c","d")
aov_result<-vector("list",length(anova_sink))
p_result<-vector()
for(i in 1:(length(anova_sink))){
  aov_result[[i]]<-aov(as.formula(paste("value","~",anova_sink[i])),df)
  p_result[i]<-tidy(aov_result[[i]])$p.value[1]

}

p_result
[1] 0.95105366 0.00341931 0.48760857 0.95084692

推荐阅读