I'm familiar with being able to extract columns from an R data frame (or matrix) like so:
df.2 <- df[, c("name1", "name2", "name3")]
But can one use a !
or other tool to select all but those listed columns?
For background, I have a data frame with quite a few column vectors and I'd like to avoid:
df.2 <- df[, c(1,3,5)]
because when my .csv file changes, my code goes to heck since the numbering isn't the same anymore. I'm new to R and think I've learned the hard way not to use number vectors for larger df's that might change.I tried:
df.2 <- df[, !c("name1", "name2", "name3")]
df.2 <- df[, !=c("name1", "name2", "name3")]
And just as I was typing this, found out that this works:
df.2 <- df[, !names(df) %in% c("name1", "name2", "name3")]
Is there a better way than this last one?
An alternative to grep
is which
:
df.2 <- df[, -which(names(df) %in% c("name1", "name2", "name3"))]