3

我需要单独对每个主题运行 ANOVA。我有一个数据框由来自 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() 仅适用于向量

任何帮助表示感谢

4

1 回答 1

0

我认为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]
于 2014-12-15T09:36:15.040 回答