Имя столбца 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