¿Cuál es una manera fácil de averiguar de qué clase pertenece cada columna en un marco de datos?
¿Cuál es una manera fácil de averiguar de qué clase pertenece cada columna en un marco de datos?
Respuestas:
Una opción es usar lapplyy class. Por ejemplo:
> foo <- data.frame(c("a", "b"), c(1, 2))
> names(foo) <- c("SomeFactor", "SomeNumeric")
> lapply(foo, class)
$SomeFactor
[1] "factor"
$SomeNumeric
[1] "numeric"
Otra opcion es str:
> str(foo)
'data.frame': 2 obs. of 2 variables:
$ SomeFactor : Factor w/ 2 levels "a","b": 1 2
$ SomeNumeric: num 1 2
classdevuelve un vector de caracteres de todas las clases de las que hereda un objeto, la salida de sapply(foo, class)podría ser una lista y no siempre un vector de caracteres como la mayoría de la gente esperaría. Lo que puede ser un poco peligroso ... Me parece lapplymucho más seguro.
unlist(lapply(foo, class))cual es útil con marcos de datos con muchas columnas.
unlistwith lapplyes una idea terrible porque es posible que length(class(x))>1 (ver comentarios arriba) - sapplysea mucho más seguro que unlist + lapply. una forma segura sería sapply(lapply(foo, class), "[", 1), dado que foo es un marco de datos
Puede hacer uso simple lapplyo sapplyfunciones integradas.
lapplyte devolverá un list-
lapply(dataframe,class)
while sapplytomará el mejor tipo de retorno posible ex. Vector, etc.
sapply(dataframe,class)
Ambos comandos le devolverán todos los nombres de las columnas con su clase respectiva.
Hola buscaba lo mismo, y podría ser también
unlist(lapply(mtcars,class))
sapply(foo, class)