总的来说,我对 R 和编码非常陌生,所以我对任何看起来愚蠢的事情提前表示歉意。
\n\n我进行了方差分析,并想对我的数据进行 TukeyHSD。起初,效果很好。然后我创建了两个数据集。在每一种剂量类型中,我都对数据进行了排序,仅包含两种剂量类型中的一种。然后我继续执行方差分析(有效),但 Tukey 产生此错误
\n\n\n\n\n-[.data.frame`(mf, mf.cols[[i]]) :选择未定义的列。
\n
这意味着什么?我在新创建的数据集中搜索列的名称,它们都存在。
\n\n太感谢了!!
\n\n这是我创建的数据集和收到的错误。
\n\ndf1 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="IM", ]\ndf2 <- Flor_Group_1_2019_EC[Flor_Group_1_2019_EC$Dose=="SC", ]\naov1 = aov(`CFU/g`~Treatment+`Time Point`, data=df1)\n summary(aov1)\n Df Sum Sq Mean Sq F value Pr(>F) \nTreatment 3 3.068e+15 1.023e+15 7.774 7.98e-05 ***\n`Time Point` 16 2.065e+16 1.291e+15 9.810 7.20e-16 ***\nResiduals 134 1.763e+16 1.316e+14 \n---\nSignif. codes: 0 \xe2\x80\x98***\xe2\x80\x99 0.001 \xe2\x80\x98**\xe2\x80\x99 0.01 \xe2\x80\x98*\xe2\x80\x99 0.05 \xe2\x80\x98.\xe2\x80\x99 0.1 \xe2\x80\x98 \xe2\x80\x99 1\n1 observation deleted due to missingness\nTukeyHSD(aov1)\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n\n\n
[.data.frame
(mf, mf.cols[[i]])中的错误:选择了未定义的列
colnames(df1)\n[1] "Steer" "Dose" "Time Point" "Treatment" "Average" \n[6] "CFU/g" "Log"\n
Run Code Online (Sandbox Code Playgroud)\n
在浏览了一些旧的源代码后,我认为这与我的数据集中的命名有关。
这是因为对于我的数据来说,就像这篇文章中的数据一样,命名约定不是很友好。虽然我们可以(``)
向 中添加“反引号” names
,但在使用基于 R 的函数进行编程时有时很难使用它们base
。那么解决办法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`)
Run Code Online (Sandbox Code Playgroud)
然后您可以重建模型并重做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)
Run Code Online (Sandbox Code Playgroud)
注意:我无法提供可重现的示例,因为我无法轻松创建示例数据集。然而,我确实按照这个答案中所述解决了这个问题。
归档时间: |
|
查看次数: |
3288 次 |
最近记录: |