Si vous souhaitez supprimer les colonnes par référence et d'éviter la copie interne associée data.frames
, alors vous pouvez utiliser l' data.table
paquet et la fonction :=
Vous pouvez passer d'un caractère de vecteur de noms à la gauche de l' :=
de l'opérateur, et NULL
comme le membre de droite.
library(data.table)
df <- data.frame(a=1:10, b=1:10, c=1:10, d=1:10)
DT <- data.table(df)
# or more simply DT <- data.table(a=1:10, b=1:10, c=1:10, d=1:10) #
DT[, c('a','b') := NULL]
Si vous souhaitez prédéfinir les noms de personnages de vecteur à l'extérieur de l'appel à l' [
, enveloppez-le nom de l'objet en ()
ou {}
de la force de la LHS à être évalués dans le contexte appelant non pas comme un nom dans le champ d'application de l' DT
.
del <- c('a','b')
DT <- data.table(a=1:10, b=1:10, c=1:10, d=1:10)
DT[, (del) := NULL]
DT <- <- data.table(a=1:10, b=1:10, c=1:10, d=1:10)
DT[, {del} := NULL]
# force or `c` would also work.
Vous pouvez également utiliser set
, ce qui évite la surcharge d' [.data.table
, et travaille également pour d' data.frames
!
df <- data.frame(a=1:10, b=1:10, c=1:10, d=1:10)
DT <- data.table(df)
# drop `a` from df (no copying involved)
set(df, j = 'a', value = NULL)
# drop `b` from DT (no copying involved)
set(DT, j = 'b', value = NULL)