Передайте имя столбца в data.таблица с использованием переменной [дубликат]


Возможные Дубликаты:
переменный выбор / назначение полей в данных.таблица

в следующем примере я создаю таблицу данных с именем столбца " 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)]
1 71

1 ответ:

использовать quote() и eval() функции для передачи переменной в j. Вам не нужны двойные кавычки имена столбцов, когда вы делаете это таким образом, потому что quote() - ed строка будет оцениваться внутри DT[]

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

С одним именем столбца, результатом является вектор. Если вам нужны данные.результат таблицы или несколько столбцов, используйте форму списка

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