使用虚拟数据集:
Species Var1 Var2 Var3
a 1 2 3
a 4 5 6
b 7 8 9
b 10 11 12
我有多个物种和大约 50 个变量(Var50)。例如,我想对每个响应变量的配对分组变量(物种)执行单向方差分析,并获得在 95% CI 处具有统计显着性的频率输出。我开始编写一个函数来执行此操作,如下所示:
data<-read.table("example.txt", header=T, sep="\t")
function(y){
for(y in 2:50)
anova.r<-aov(y~Species, data = data)
result<-TukeyHSD(anova.r, conf.level = 0.95)
f.result ## I cannot figure out how to extract the "p adj" from the results
f.result<-sum(prob.result>=0.05)
write.table(f.result, file = "anova95.csv", sep = ",",
col.names = FALSE, append=TRUE)
}
最终,我希望决赛桌(虚拟答案)看起来像
Var1 Var2 Var3......Var50
Frequency at 95% CI 106 200 45 246
我知道我可以[[]]
用来访问 Tukey 测试结果中的数据。我尝试使用tukey.results[[1]][,1]
最多tukey.results[[1]][,3]
无济于事。tukey.results[[1]]
返回 Tukey 测试的所有列。
另外,我想我可能不得不cbind
在函数中的某个地方使用来获取它们各自列中的数据。或者我认为可以使用该apply
命令,但我不知道如何在每次迭代时改变响应变量的同时保持分组变量不变。
任何建议将不胜感激。