113

重複の可能性:
data.table 内のフィールドを可変に選択/割り当てる

次の例では、列名 'x' と 'v' を持つデータ テーブルを作成しています。</p>

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)]
4

1 に答える 1

62

quote()およびeval()関数を使用して、変数を に渡しますjquote()-ed 文字列は内部で評価されるため、この方法で列名を二重引用符で囲む必要はありません。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
于 2012-09-26T17:37:51.803 に答える