いくつかの変数を data.table にまとめ、ワイド形式で出力し、おそらく変数ごとのリストとして出力したいと考えています。他のいくつかのアプローチではうまくいかなかったので、変数の名前を文字ベクトルとして指定して、外側のラップを実行しようとしました。with=FALSE を使用して、これらを渡したかったのです。
carsx=as.data.table(cars)
lapply( list(speed="speed",dist= "dist"), #error object 'ansvals' not found
function(x) carsx[,list(mean(x), min(x), max(x) ), with=FALSE ] )
これではうまくいかないので、lapply を使わずにもっとシンプルな方法を試してみました。
carsx[,list(mean("speed"), min("speed"), max("speed") ), with=FALSE ] #error object 'ansvals' not found
これもうまくいきません。このようなことをする方法はありますか?「with」のこの動作は必要ですか? (列を選択するためだけに言及していることは承知して?data.table
いますが、私の場合、それらも変換できると便利です)
with=FALSE の場合、j は選択する名前または位置のベクトルであり、data.frame と同様です。with=FALSE は、data.table で列を動的に選択するのに役立ちます。
編集私の目的は、さまざまな変数について、グループごとに幅広い形式で要約を取得することです。変数のリストについて、1つの変数に対してのみ機能する以下を拡張しようとしました。
carsx[,list(mean(speed), min(speed), max(speed) ) ,by=(dist>50)
残念なことに、他の質問を投稿させてくれません。そこで、次のような出力が必要だと説明しました。
lapply( list(speed="speed",dist= "dist"),
function(x) do.call("as.data.frame", aggregate(cars[,x], list(class=cars$dist>50), FUN=summary) ) )
予想される出力は次のようになります。
$speed
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25
$dist
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25