我需要对每个主题单独运行方差分析。 我有一个数据框由来自 37 个主题的数据组成,我不想循环 37 次以对每个主题分别运行 37 次方差分析。 这些是我数据的前 4 行:
latency subject trialcode
1 1385 14233664 neighbour
2 2493 14233664 neighbour
3 1429 14233664 neighbour
4 1884 14233664 neighbour
这是我的代码:
tmp <- with(as.data.frame(data),
by(data$subject,
function(x) aov(latency ~ trialcode + Error(trialcode), data=data)))
sapply(tmp, coef)
但是我收到一条错误消息:
Error in unique.default(x, nmax = nmax) :
unique() 只适用于向量
感谢任何帮助 谢谢
最佳答案
我认为 by
调用不正确。如果我使用 data(npk)
do.call(rbind,by(npk[,-1], npk$block,
FUN=function(x) coef(aov(yield~N+P+K, data=x))))
对于你的数据,它可能是
do.call(rbind, by(data[,-2], data$subject,
FUN=function(x) coef(aov(latency ~ trialcode+ Error(trialcode), x))))
或者使用data.table
library(data.table)
setkey(setDT(data), subject)[, as.list(coef(aov(latency~trialcode+
Error(trialcode))),by=subject]
关于R在数据框组上应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27480925/