Se si desidera rimuovere le colonne per riferimento ed evitare la copia interna associata, data.frames
è possibile utilizzare il data.table
pacchetto e la funzione:=
È possibile passare i nomi di un vettore di caratteri sul lato sinistro :=
dell'operatore e NULL
come RHS.
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]
Se si desidera predefinire i nomi come vettore di caratteri all'esterno della chiamata [
, inserire il nome dell'oggetto in ()
o {}
forzare la valutazione di LHS nell'ambito di chiamata non come un nome nell'ambito di 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.
Puoi anche usare set
, il che evita il sovraccarico di [.data.table
, e funziona anche per 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)
e invece dobbiamo fare queste complicate soluzioni?