How do you remove columns from a data.frame?
I use data.table's :=
operator to delete columns instantly regardless of the size of the table.
DT[, coltodelete := NULL]
or
DT[, c("col1","col20") := NULL]
or
DT[, (125:135) := NULL]
or
DT[, (variableHoldingNamesOrNumbers) := NULL]
Any solution using <-
or subset
will copy the whole table. data.table's :=
operator merely modifies the internal vector of pointers to the columns, in place. That operation is therefore (almost) instant.
To delete single columns, I'll just use dat$x <- NULL
.
To delete multiple columns, but less than about 3-4, I'll use dat$x <- dat$y <- dat$z <- NULL
.
For more than that, I'll use subset
, with negative names (!):
subset(mtcars, , -c(mpg, cyl, disp, hp))