可能性のある複製:
data.tableのフィールドへの可変選択/割り当て
次の例では、列名「x」と「v」を持つデータテーブルを作成しています。
library('data.table')
DT <- data.table(x = c("b","b","b","a","a"), v = rnorm(5))
列「x」の値にアクセスするには:
DT[ , x]
# [1] "b" "b" "b" "a" "a"
しかし、変数を渡すことでアクセスしたい場合は機能しません
temp <- "x"
DT[ , temp]
# [1] "x"
複数の列があり、そのうちのいくつかの値のみを選択する必要があります。これらの列名は、Rモジュールを経由して提供されます。
気にしないで、私はそれを手に入れました、それは次のはずです:
DT[ , get(temp)]
quote()
およびeval()
関数を使用して、変数をj
に渡します。 quote()
- ed文字列はDT[]
内で評価されるため、この方法で列名を二重引用符で囲む必要はありません。
temp <- quote(x)
DT[ , eval(temp)]
# [1] "b" "b" "b" "a" "a"
単一の列名では、結果はベクトルになります。 data.tableの結果または複数の列が必要な場合は、リスト形式を使用します
temp <- quote(list(x, v))
DT[ , eval(temp)]
# x v
# 1: b 1.52566586
# 2: b 0.66057253
# 3: b -1.29654641
# 4: a -1.71998260
# 5: a 0.03159933