Arrojar las columnas del marco de datos por su nombre

Tengo una serie de columnas que me gustaría eliminar de un marco de datos. Sé que podemos eliminarlas individualmente usando algo como:

df$x <- NULL

Pero esperaba poder hacerlo con menos comandos.

Además, sé que podría soltar columnas utilizando la indexación de enteros así:

df <- df[ -c(1, 3:6, 12) ]

Pero me preocupa que la posición relativa de mis variables pueda cambiar.

Teniendo en cuenta lo potente que es R, pensé que podría haber una forma mejor que soltar cada columna una por una.

Solución

Puede utilizar una simple lista de nombres:


DF 
Comentarios (6)

También existe el comando subset, útil si sabes qué columnas quieres:


df 
Comentarios (10)

Puedes usar %in% así:

df[, !(colnames(df) %in% c("x","bar","foo"))]
Comentarios (3)