Pase el nombre de la columna en data.table usando la variable

Posible duplicado:
Selección / asignación variables a campos en un data.table

En el siguiente ejemplo, estoy creando una tabla de datos con el nombre de columna ‘x’ y ‘v’

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

Puedo acceder a los valores de la columna ‘x’ de la siguiente manera:

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

Pero si quiero acceder pasando una variable, no funciona

 temp <- "x" DT[ , temp] # [1] "x" 

Habría varias columnas y tendré que seleccionar valores solo para dos de ellas. Estos nombres de columna se proporcionarán pasando a través de un módulo R.

No importa, lo tengo, debería ser:

 DT[ , get(temp)] 

Use las funciones quote() y eval() para pasar una variable a j . No necesita comillas dobles en los nombres de columna cuando lo hace de esta manera, porque la cadena de quote() se evaluará dentro del DT[]

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

Con un solo nombre de columna, el resultado es un vector. Si desea un resultado de tabla de datos o varias columnas, use el formulario de lista

 temp < - quote(list(x, v)) DT[ , eval(temp)] # xv # 1: b 1.52566586 # 2: b 0.66057253 # 3: b -1.29654641 # 4: a -1.71998260 # 5: a 0.03159933