Comment sélectionner plusieurs colonnes en utilisant un vecteur de leurs indices numériques (position) dans data.table
?
C'est ainsi que nous ferions avec un data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
r
data.table
jamborta
la source
la source
dt[,"a"]
etdt[,"a", with=FALSE]
voyez à quel point c'est une option utile.DT[,list(b:c)
, comme j'ai trouvé pratique de transformer les colonnes directement dans la table de données, par exemple je peux le faireDT[,list(1/b,2*c)]
, mais cela ne fonctionne pas avec.with=FALSE
inutile dans ce cas: github.com/Rdatatable/data.table/issues/…data.frame
compatible d'utiliserwith=FALSE
. Cependant, il y a environ 3 semaines, la version de développement de data.table a été modifié pour des appels commedt[, 2]
,dt[, 2:3]
,dt[, "b"]
etdt[, c("b", "c")]
se comporter comme ils le font dans le avecdata.frame
s sans avoir à définir explicitementwith=FALSE
. C'est génial! Voir ici pour le commit particulier, y compris l'entrée NEWS décrivant le changement.C'est un peu verbeux, mais je me suis habitué à utiliser la
.SD
variable cachée .C'est un peu compliqué, mais vous ne perdez pas sur les autres fonctionnalités data.table (je ne pense pas), vous devriez donc toujours pouvoir utiliser d'autres fonctions importantes comme les tables de jointure, etc.
la source
Si vous souhaitez utiliser des noms de colonnes pour sélectionner les colonnes, utilisez simplement
.()
, qui est un alias pourlist()
:la source
À partir de la v1.10.2, vous pouvez également utiliser
..
la source
dt[, !..keep_cols]
etdt[, -..keep_cols]
fonctionne comme prévu!@Tom, merci beaucoup d'avoir signalé cette solution. Ça marche bien pour moi.
Je cherchais un moyen d'exclure simplement une colonne de l'impression et de l'exemple ci-dessus. Pour exclure la deuxième colonne, vous pouvez faire quelque chose comme ça
la source