visualizar mtcars functions español ejemplos data crear column r dataframe

mtcars - ¿Cómo extraigo una sola columna de un data.frame como un data.frame?



r data frame mtcars (2)

Digamos que tengo un data.frame:

df <- data.frame(A=c(10,20,30),B=c(11,22,33), C=c(111,222,333)) A B C 1 10 11 111 2 20 22 222 3 30 33 333

Si selecciono dos (o más) columnas obtengo un data.frame:

x <- df[,1:2] A B 1 10 11 2 20 22 3 30 33

Esto es lo que quiero. Sin embargo, si selecciono solo una columna, obtengo un vector numérico:

x <- df[,1] [1] 1 2 3

He intentado usar as.data.frame (), que no cambia los resultados para dos o más columnas. devuelve un data.frame en el caso de una columna, pero no conserva el nombre de la columna:

x <- as.data.frame(df[,1]) df[, 1] 1 1 2 2 3 3

No entiendo por qué se comporta así. En mi opinión, no debería hacer una diferencia si extraigo una, dos o diez columnas. TI debería siempre devolver un vector (o matriz) o siempre devolver un data.frame (con los nombres correctos). ¿Qué me estoy perdiendo? ¡Gracias!


Omitir el ,

x <- df[1] A 1 10 2 20 3 30

¿De la página de ayuda de ?"[" :

La indexación por [es similar a los vectores atómicos y selecciona una lista de los elementos especificados.

Un marco de datos es una lista. Las columnas son sus elementos.


Use drop=FALSE

> x <- df[,1, drop=FALSE] > x A 1 10 2 20 3 30

De la documentación (vea ?"[" ) Puede encontrar:

Si drop = TRUE, el resultado se coacciona a la dimensión más baja posible.