data.table
パッケージを使用してデータセットの一部を選択する関数を記述したいと思います。関数の宣言されたパラメータは、次のとおりdata.table:カスタム関数で条件付きのデータセットの一部を選択
- 入力データセット(
dset
)、 - データセットがサブセットであろうれる変数(
seg.var
)、変数(value
)の上方宣言の - 値。
私は基本Rでの作業関数を記述することができました:
# Function without data.table
data.select <- function(dset, seg.var, value){
dset.out <- dset[dset[[seg.var]] == value,]
return(dset.out)
}
data.select(iris, "Species", "setosa")
しかし、私はdata.table
パッケージでそれを書き換えることができません:以下の機能が動作しません。評価における
# Function with data.table
data.select.dt <- function(dset, seg.var, value){
dset <- as.data.table(dset)
dset.out <- dset[seg.var == value,]
return(dset.out)
}
data.select.dt(iris, Species, "setosa")
エラー(exprは、ENVIR、enclos):がく片:5つのCOLSのオブジェクトの種 'が見つかりません
data.select.dt(iris, "Species", "setosa")
空data.table(0行) .Length、Sepal.Width、Petal.Length、Petal.Width、Species
入力データセットはdata.frame
フォーマットです。上記の関数を上書きするという目標は、パフォーマンスの向上です。どんな助けもありがとう。
なぜ関数内でdata.tableに変換していますか?データセット全体のコピーを作成しています。 'setDT'を使って、すでに' data.table'を適切な場所に変換することで、すでに 'data.table'を操作する方が良いでしょう。いずれにせよ、私は単純なバイナリ結合を行います。 'data.select.dt
残りのコードが確実に動作するようにしたいと思います。 'iris'より大きいデータセットを扱うので、コード全体を書き直すことなく、' data.table'で実装された 'base 'サブセットのパフォーマンスを比較したいと思います。 – kaksat
@kaksat、私の答えで 'if(!data.table :: is.data.table(dset))'を見て、 'dset'が' data.table'なら時間とRAMを節約してください。 –