Передайте имя столбца в data.table, используя переменную
Возможный дубликат:
Переменный выбор / назначение полей в data.table
В следующем примере я создаю таблицу данных с именами столбцов "x" и "v"
library('data.table')
DT <- data.table(x = c("b","b","b","a","a"), v = rnorm(5))
Я могу получить доступ к значениям столбца "х" с помощью:
DT[ , x]
# [1] "b" "b" "b" "a" "a"
Но если я хочу получить доступ через переменную, это не сработает
temp <- "x"
DT[ , temp]
# [1] "x"
Там будет несколько столбцов, и мне придется выбрать значения только для нескольких из них. Эти имена столбцов я предоставлю, пройдя через R-модуль.
Неважно, я понял, это должно быть:
DT[ , get(temp)]
1 ответ
Использовать quote()
а также eval()
функции для передачи переменной j
, Вам не нужны двойные кавычки на имена столбцов, когда вы делаете это таким образом, потому что quote()
строка будет оцениваться внутри 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