Duplicate possible:
Sélection/attribution variable de champs dans un fichier data.table
Dans l'exemple suivant, je crée une table de données dont le nom de colonne est "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' par:
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 devrais sélectionner des valeurs pour seulement deux d'entre elles. Ces noms de colonne seront fournis en passant par un module R.
Qu'à cela ne tienne, j'ai compris, cela devrait être:
DT[ , get(temp)]
Utilisez les fonctions quote()
et eval()
pour transmettre une variable à j
. Vous n'avez pas besoin de guillemets doubles sur les noms de colonne lorsque vous procédez ainsi, car la chaîne quote()
- ed sera évaluée à l'intérieur du 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 voulez un résultat data.table, ou plusieurs colonnes, utilisez list form
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