1. ホーム
  2. r

[解決済み] data.tableで変数を使ってカラム名を渡す[重複]。

2022-09-28 14:14:42

質問

重複の可能性があります。

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() -の中で評価されるからです。 DT[]

temp <- quote(x)
DT[ , eval(temp)]
# [1] "b" "b" "b" "a" "a"

カラム名が1つの場合、結果はベクトルになります。もし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