L'un des éléments suivants supprimera la colonne foodu tableau de données df3:
# Method 1 (and preferred as it takes 0.00s even on a 20GB data.table)
df3[,foo:=NULL]
df3[, c("foo","bar"):=NULL] # remove two columns
myVar = "foo"
df3[, (myVar):=NULL] # lookup myVar contents
# Method 2a -- A safe idiom for excluding (possibly multiple)
# columns matching a regex
df3[, grep("^foo$", colnames(df3)):=NULL]
# Method 2b -- An alternative to 2a, also "safe" in the sense described below
df3[, which(grepl("^foo$", colnames(df3))):=NULL]
data.table prend également en charge la syntaxe suivante:
## Method 3 (could then assign to df3,
df3[, !"foo"]
mais si vous vouliez réellement supprimer la colonne "foo"de df3(au lieu d'imprimer simplement une vue de la df3colonne moins "foo"), vous voudriez vraiment utiliser la méthode 1 à la place.
(Notez que si vous utilisez une méthode reposant sur grep()ou grepl(), vous devez définir pattern="^foo$"plutôt que "foo", si vous ne voulez pas que les colonnes avec des noms comme "fool"et "buffoon"(c'est-à-dire celles contenant foocomme sous-chaîne) soient également mises en correspondance et supprimées.)
Options moins sûres, bien pour une utilisation interactive:
Les deux idiomes suivants fonctionneront également - s'ils df3contiennent une correspondance de colonne"foo" - mais échoueront d'une manière probablement inattendue si ce n'est pas le cas. Si, par exemple, vous utilisez l'un d'eux pour rechercher la colonne inexistante "bar", vous vous retrouverez avec un data.table à zéro ligne.
En conséquence, ils sont vraiment les mieux adaptés à une utilisation interactive où l'on peut, par exemple, vouloir afficher une table de données moins toutes les colonnes avec des noms contenant la sous-chaîne "foo". À des fins de programmation (ou si vous souhaitez réellement supprimer les colonnes df3plutôt que d'en copier), les méthodes 1, 2a et 2b sont vraiment les meilleures options.
# Method 4:
df3[, .SD, .SDcols = !patterns("^foo$")]
Enfin, certaines approches sont utilisées with=FALSE, mais data.tables'éloignent progressivement de cet argument, il est donc déconseillé de les éviter; montrant ici afin que vous sachiez que l'option existe au cas où vous en auriez vraiment besoin:
# Method 5a (like Method 3)
df3[, !"foo", with=FALSE]
# Method 5b (like Method 4)
df3[, !grep("^foo$", names(df3)), with=FALSE]
# Method 5b (another like Method 4)
df3[, !grepl("^foo$", names(df3)), with=FALSE]
dtau lieu dedf3...