2016-05-05 3 views
0

私はdcast.data.tableという関数を使用しています。これは引数として例えばsumやmeanのような要約関数をとります。私のデータには "NA"というエントリが含まれています。無視したいので、平均の引数としてna.rmを追加したいと思います。どのような構文を使用できますか?ここでR:別の関数(dcast.data.table)によって呼び出された関数の引数

は、私が正常に何ができるかです:

> library("data.table") 
> library("reshape2") 
> DT = data.table(x=rep(c("a","b"),each=5), y=c(1,2), v=c(1:7,NA,NA)) # created as an example 
# tabulate the mean value of v for each x-y combination: 
> dcast.data.table(DT, x~y,fun = mean, value.var = 'v') 
    x 1 2 
1: a 3 3 
2: b NA NA 

私はdcast.data.table内部で使用されている意味関数に引数を渡すna.rmしたいと思い、これを実行する方法はありますか?

+1

通常の構文 'dcast.data.table(DT、Xがお役に立てば幸いです〜y、平均、na.rm =真、value.var = 'v') '。そして、 'reshape2'をロードしないでください。 –

+2

あなたの問題を解決する適切な方法は、 '?dcast.data.table'と入力して読むことです。 – jangorecki

+0

ありがとうございました!私はDavid Arenburgのソリューションに近いものを試していましたが、動作しなかったので構文を忘れていたに違いありません。なぜreshape2しませんか? – debrah

答えて

-1

あなたがこの方法を意味カプセル化することができます:function(x){mean(x, na.rm=T)}

この方法は、あなたのコードになるでしょう:

library("data.table") 
library("reshape2") 
DT = data.table(x=rep(c("a","b"),each=5), y=c(1,2), v=c(1:7,NA,NA)) 
myMean = function(x){mean(x, na.rm=T)} 
dcast.data.table(DT, x~y,fun = myMean, value.var = 'v') 

はそれが

+0

ありがとうBreno!本当にシンプルでポイントまで – debrah

関連する問題