使用lapply或plyr对类别进行重复分析

使用lapply或plyr对类别进行重复分析,r,R,我一直在做一些我认为很简单的事情——将一个数据帧子集,然后打印几个测试的输出,在类别上重复 本着避免for循环的精神,我尝试了lappy,但它似乎用方差分析覆盖了单向 我也试过dlply,它不运行 library(plyr) dat<-data.frame(value=rnorm(300), aCategory=rep(1:3, c(100, 100, 100)), bCategory=rep(1:2, 30

我一直在做一些我认为很简单的事情——将一个数据帧子集,然后打印几个测试的输出,在类别上重复

本着避免for循环的精神,我尝试了lappy,但它似乎用方差分析覆盖了单向

我也试过dlply,它不运行

library(plyr)

dat<-data.frame(value=rnorm(300),
                    aCategory=rep(1:3, c(100, 100, 100)),
                    bCategory=rep(1:2, 300)
                    )

aFunc<-function(cat){
  sub<-subset(dat, aCategory=="cat")
  oneway.test(value~bCategory, dat)
  summary(aov(value~bCategory, dat))
}

lapply(unique(dat$aCategory), aFunc)

dlply(dat, .(aCategory), summarise, 
      oneway.test(value~bCategory),
      summary(aov(value~bCategory))
      )
库(plyr)

dat一个函数只能有一个返回值。试试这个:

aFunc<-function(cat){
  #sub<-subset(dat, aCategory==cat)
  #help(subset) warns against using subset inside functions
  sub <- dat[dat$aCategory==cat,]
  list(oneway.test(value~bCategory, sub),
       summary(aov(value~bCategory, sub)))
}

lapply(unique(dat$aCategory), aFunc)

aFuncYou可能不应该重复进行单向方差分析,而是进行双向方差分析,为代码中的错误道歉,我应该检查这些。非常感谢你的帮助,那就行了。了解函数中的子集也很有用-我没有发现这一点