Por ejemplo, con el conjunto de datos mtcars
¿Cómo puedo obtener un marco de datos con columnas eliminadas temporalmente por su nombre?
mtcars[ , "cyl"]
y
mtcars[ , 2]
tanto dame la misma columna. Por lo tanto, ya que puedo conseguir todo pero la columna 2 de esta manera:
mtcars[ , -2]
no me esperaba esto:
mtcars[ , -"cyl"]
Error in -"cyl" : invalid argument to unary operator
vez lo mejor que puedo llegar a es la siguiente:
mtcars[ , !colnames(mtcars)=="cyl"]
¿Existe una solución más fácil?
EDITAR: Parece lógico que si las dos primeras técnicas funcionan, también deberían las dos técnicas siguientes. Esperaba que me estaba perdiendo algo. Las páginas de ayuda para ?"["
o ?subset
no explican este resultado contrario a la intuición. Alguien sabe por qué es esto?
@Joshua Creo que estos son un poco diferentes, aquí el objetivo es eliminar una sola columna por nombre, donde las convenciones habituales no funcionan. –
Hice un ligero cambio en el título y agregué "por qué" a la pregunta. –
Las reglas se explican en la sección 2.7 del manual Introducción a R: http://cran.r-project.org/doc/manuals/R-intro.html#Index-vectors –