Имя столбца pass в таблице data.table с использованием переменной в R

Возможный дубликат:
Возможность выбора/назначения полей в таблице data.table

В следующем примере я создаю таблицу данных с именами столбцов "x" и "v

library('data.table')
DT = data.table(x=c("b","b","b","a","a"),v=rnorm(5)) DT$
DT$v  DT$x

Я могу получить доступ к значениям столбца 'x:

DT[,x]
[1] "b" "b" "b" "a" "a"

Но если я хочу получить доступ, пройдя через переменную, он не работает

 temp="x"
 DT[,temp]
[1] "x"

Было бы несколько столбцов, и мне нужно будет выбирать значения только для нескольких из них. Эти имена столбцов я буду предоставлять, пройдя через модуль R.

Ничего, я получил его

Я понял. это будет

DT[,get(temp)]

Ответ 1

Используйте функции 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