¿Cuál es una manera fácil de averiguar de qué clase pertenece cada columna en un marco de datos?
85
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
sapply(foo, class)classdevuelve un vector de caracteres de todas las clases de las que hereda un objeto, la salida desapply(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 parecelapplymucho más seguro.unlist(lapply(foo, class))cual es útil con marcos de datos con muchas columnas.unlistwithlapplyes una idea terrible porque es posible quelength(class(x))>1(ver comentarios arriba) -sapplysea mucho más seguro queunlist + lapply. una forma segura seríasapply(lapply(foo, class), "[", 1), dado que foo es un marco de datosPuede hacer uso simple
lapplyosapplyfunciones integradas.lapplyte devolverá unlist-while
sapplytomará el mejor tipo de retorno posible ex. Vector, etc.Ambos comandos le devolverán todos los nombres de las columnas con su clase respectiva.
fuente
Hola buscaba lo mismo, y podría ser también
fuente
También puede usar
purrr, que es similar a lasapplyfunciones familiares:fuente