【问题标题】:Undefined columns selected when performing TukeyHSD执行 TukeyHSD 时选择了未定义的列
【发布时间】:2019-12-30 05:18:10
【问题描述】:

总的来说,我对 R 和编码非常陌生,所以对于任何可能看起来很愚蠢的事情,我提前道歉。

我执行了方差分析,并想对我的数据执行 TukeyHSD。起初,它工作得很好。然后我创建了两个数据集。在每一个中,我都对我的数据进行了排序,以仅包含两种剂量类型中的一种。然后我继续执行 ANOVA(有效),但 Tukey 产生此错误

-[.data.frame`(mf, mf.cols[[i]]) : 选择了未定义的列。

这是什么意思?我在新创建的数据集中搜索列的名称,它们都存在。

非常感谢!!

这是我创建的数据集和收到的错误。

df1 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="IM", ]
df2 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="SC", ]
aov1 = aov(`CFU/g`~Treatment+`Time Point`, data=df1)
    summary(aov1)
              Df    Sum Sq   Mean Sq F value   Pr(>F)    
Treatment      3 3.068e+15 1.023e+15   7.774 7.98e-05 ***
`Time Point`  16 2.065e+16 1.291e+15   9.810 7.20e-16 ***
Residuals    134 1.763e+16 1.316e+14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
1 observation deleted due to missingness
TukeyHSD(aov1)

[.data.frame(mf, mf.cols[[i]]) 中的错误:选择了未定义的列

colnames(df1)
[1] "Steer"      "Dose"       "Time Point" "Treatment"  "Average"   
[6] "CFU/g"      "Log"

【问题讨论】:

    标签: r anova tukey


    【解决方案1】:

    在经历了一些旧的source code 之后,我认为这与我的数据集中的命名有关。

    这是因为对于我的数据,比如这篇文章中的数据,命名约定不是很友好。虽然我们可以在names 中添加“反引号”(``),但在使用基于 base R 的函数进行编程时,有时很难使用它们。那么解决办法就是rename如下:

    # base
    names(df1) <- gsub("CFU\\/g","CFU",names(df1))
    names(df1) <- gsub("Time Point","time",names(df1))
    # tidyverse
    dplyr::rename(df1, CFU = `CFU/g`,
    time = `Time Point`)
    
    

    然后您可以重建模型并重做TukeyHSD

    df1 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="IM", ]
    df2 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="SC", ]
    aov1 = aov(CFU~Treatment+ time , data=df1)
    TukeyHSD(aov1)
    

    注意:我无法提供可重现的示例,因为我无法轻松创建示例数据集。但是,我确实按照此答案中的说明解决了此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 2013-10-12
      • 2017-12-09
      • 2020-07-29
      • 1970-01-01
      • 2019-06-16
      相关资源
      最近更新 更多