【发布时间】:2015-02-10 12:27:18
【问题描述】:
下面是一个有效的 R 脚本。我想对数据帧 dfa 和 dfb 进行方差分析 - 但是 aov 函数只读取第一个数据帧。我已经搜索但没有找到解决方案。脚本的易读性比计算效率更重要。 如何使 aov 循环遍历数据帧? 提前致谢。
#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) : object 'Obs' not found -
哇,不一样了!无论如何,'function' 和 'lapply' 都有效,而且我还将变量名称更改为更独特的名称。
-
对不起 - 我忘了 - 非常感谢!现在我将尝试使用这些知识。