Wenn Sie die Spalten als Referenz entfernen und das damit verbundene interne Kopieren vermeiden möchten, data.frames
können Sie das data.table
Paket und die Funktion verwenden:=
Sie können Zeichenvektornamen an die linke Seite des :=
Operators und NULL
als RHS übergeben.
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]
Wenn Sie die Namen als Zeichenvektor außerhalb des Aufrufs an vordefinieren möchten [
, wickeln Sie den Namen des Objekts in das aufrufende Objekt ein ()
oder {}
erzwingen Sie, dass es im aufrufenden Bereich ausgewertet wird, nicht als Name im Bereich von 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.
Sie können auch verwendet werden set
, was den Aufwand für das vermeidet [.data.table
, und arbeitet auch für 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)
df#drop(var_name)
ist und wir stattdessen diese komplizierten Workarounds durchführen müssen?