私はRでexp(ここにファイル)と呼ばれる大きなデータフレームを使用しています。パフォーマンスの観点から、plyrからidata.frame()関数をチェックアウトすることをお勧めします。しかし、私はそれを間違って使用していると思います。
私の元の呼び出しは遅いですが、機能します:
df.median<-ddply(exp,
.(groupname,starttime,fPhase,fCycle),
numcolwise(median),
na.rm=TRUE)
idata.frameを使用すると、Error: is.data.frame(df) is not TRUE
library(plyr)
df.median<-ddply(idata.frame(exp),
.(groupname,starttime,fPhase,fCycle),
numcolwise(median),
na.rm=TRUE)
だから、多分それは私のデータだと思いました。そこで、baseball
データセットを試しました。このidata.frame
例は正常に機能します。dlply(idata.frame(baseball), "id", nrow)
ただし、を使用して目的の呼び出しに似たものを試してみるとbaseball
、機能しません。
bb.median<-ddply(idata.frame(baseball),
.(id,year,team),
numcolwise(median),
na.rm=TRUE)
>Error: is.data.frame(df) is not TRUE
おそらく私のエラーは、グループ化を指定する方法にありますか?誰かが私の例を機能させる方法を知っていますか?
ETA:
私も試しました:
groupVars <- c("groupname","starttime","fPhase","fCycle")
voi<-c('inadist','smldist','lardist')
i<-idata.frame(exp)
ag.median <- aggregate(i[,voi], i[,groupVars], median)
Error in i[, voi] : object of type 'environment' is not subsettable
これは中央値を取得するためのより高速な方法を使用しますが、別のエラーが発生します。idata.frameの使い方がよくわからないと思います。