0
下面是一个可用的R脚本。我想要anova数据帧dfa然后dfb - 但 aov函数只读取第一个数据帧。我已经搜索,但没有找到解决方案。脚本比计算效率更容易阅读。 如何让aov循环访问数据框? 在此先感谢。R looping anova并从列表中挑选数据框名称
#two dummy data frames
Obs <- c(1,2,1,4,5,6) ;Treat <- c(1,1,1,2,2,2)
dfa <- data.frame(Obs=Obs, Treat=Treat)
Obs2 <- c(10,22,10,43,52,60)
dfb <- data.frame(Obs=Obs2, Treat=Treat)
Names <- c("dfa","dfb")
# Loop here but cannot get it to work with calling data frame names just repeats first analysis - dfb has quite different values
for(i in 1:2) {
print(summary(aov(Obs ~ Treat, data=as.data.frame(Names[i]))))
print(Names[i])
}
另外,在您的代码中,值会在您创建Obs' Treat'对象时重复。结果可能来自'summary(aov(Obs〜Treat))的输出'假设你创建了数据集而不创建矢量对象'dfa < - data.frame(Obs = c(1,2,1,4,5) ,6),Treat = c(1,1,1,2,2,2)); dfb < - data.frame(Obs = c(10,22,10,43,52,60),Treat = c(1,1,1,2,2,2))'运行循环时,'Error in eval(expr,envir,enclos):找不到对象'Obs' – akrun 2015-02-10 12:38:56
哇,这是不同的!无论如何,'函数'和'lapply'都起作用,并且我还将变量名称更改为更加独特的名称。 – 2015-02-10 14:11:27
对不起 - 我忘了 - 非常感谢!现在我将尝试使用这些知识。 – 2015-02-10 14:18:54