1

簡単だと思っていたことをやってしまいました - データフレームをサブセット化し、いくつかのテストから出力を出力し、カテゴリで繰り返し

forループを回避するという精神で、私はラップリーを試しましたが、一方向をanovaで上書きしているようです

実行されない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))
      )

誰かが私を正しい方向に向けることができますか?

ありがとう

4

1 に答える 1

2

関数は戻り値を 1 つだけ持つことができます。これを試して:

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)

ここで、さらにいくつかの間違いを修正する必要がありました。たとえば、実際にサブセットを使用してテストを行いcat、 string ではなくの値と比較します"cat"

lapplyまだループであることに注意してください。

于 2013-03-19T12:41:38.383 に答える