Drop data frame columns by name
You can use a simple list of names :
DF <- data.frame( x=1:10, y=10:1, z=rep(5,10), a=11:20)drops <- c("x","z")DF[ , !(names(DF) %in% drops)]
Or, alternatively, you can make a list of those to keep and refer to them by name :
keeps <- c("y", "a")DF[keeps]
EDIT :For those still not acquainted with the drop
argument of the indexing function, if you want to keep one column as a data frame, you do:
keeps <- "y"DF[ , keeps, drop = FALSE]
drop=TRUE
(or not mentioning it) will drop unnecessary dimensions, and hence return a vector with the values of column y
.
within(df, rm(x))
is probably easiest, or for multiple variables:
within(df, rm(x, y))
Or if you're dealing with data.table
s (per How do you delete a column by name in data.table?):
dt[, x := NULL] # Deletes column x by reference instantly.dt[, !"x"] # Selects all but x into a new data.table.
or for multiple variables
dt[, c("x","y") := NULL]dt[, !c("x", "y")]