Estoy familiarizado con ser capaz de extraer las columnas de una trama de datos R (o matriz), así:Selección de columnas en la trama de datos basados en los que R * no * en un vector
df.2 <- df[, c("name1", "name2", "name3")]
Pero puede uno utilice una herramienta !
u otra para seleccionar todas excepto las columnas enumeradas?
Para el fondo, que tienen una trama de datos con unos vectores de columna bastante y me gustaría evitar:
- Escribiendo a cabo la mayoría de los nombres cuando tan sólo pudiera eliminar una minoría
- Uso el mucho más corto
df.2 <- df[, c(1,3,5)]
porque cuando mi archivo .csv cambia, mi código se vuelve obvio ya que la numeración ya no es la misma. Soy nuevo en R y creo haber aprendido de la manera difícil de no usar vectores numéricos para df's más grandes que puedan cambiar.
me trataron:
df.2 <- df[, !c("name1", "name2", "name3")]
df.2 <- df[, !=c("name1", "name2", "name3")]
Y justo cuando estaba escribiendo esto, se enteraron de que esto funciona:
df.2 <- df[, !names(df) %in% c("name1", "name2", "name3")]
¿Hay una manera mejor que esto último?
Generalmente, acorto el último ejemplo utilizando un operador de infijo personalizado: ''% ni%' <- Negate ('% en%')'. – joran
@joran ¿Eso no solo lo acorta con un '!'? ¿O me estoy perdiendo algo? – Hendy
Sí, aunque la mayoría de la gente usa() para que guarden otro 2. Es más acerca de la legibilidad para mí. – joran