Passer le nom de la colonne dans data.table en utilisant la variable

Duplication possible:
Sélectionner / assigner aux champs de manière variable dans un data.table

Dans l’exemple suivant, je crée une table de données ayant le nom de colonne ‘x’ et ‘v’

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

Je peux accéder aux valeurs de la colonne ‘x’ en:

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

Mais si je veux accéder en passant par une variable, cela ne fonctionne pas

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

Il y aurait plusieurs colonnes et je devrai sélectionner des valeurs pour quelques-unes seulement. Ces noms de colonne seront fournis en passant par un module R.

Qu’à cela ne tienne, je l’ai eu, ça devrait être:

 DT[ , get(temp)] 

Utilisez les fonctions quote() et eval() pour passer une variable à j . Vous n’avez pas besoin de guillemets doubles sur les noms de colonne lorsque vous le faites de cette manière, car la chaîne quote() sera évaluée dans le DT[]

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

Avec un seul nom de colonne, le résultat est un vecteur. Si vous souhaitez un résultat data.table, ou plusieurs colonnes, utilisez le formulaire de liste

 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