【问题标题】:Fail to extra p-value from aov using tidy无法使用 tidy 从 aov 中获得额外的 p 值
【发布时间】:2021-10-17 21:15:21
【问题描述】:

我正在使用这个 R- One way anova extracting 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

应该没问题。

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

说实话,此时我的问题已经用Extract p-value from aov解决了,但是我还是想知道为什么其他方法失败了。

【问题讨论】:

    标签: r anova broom


    【解决方案1】:

    你需要使用双括号(见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")
    

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多