Algo no mencionado por @Michal es que no solo es una matriz más pequeña que el marco de datos equivalente, el uso de matrices puede hacer que su código sea mucho más eficiente que usar marcos de datos, a menudo considerablemente. Esa es una de las razones por las cuales internamente, muchas funciones R forzarán a las matrices de datos que están en marcos de datos.
Los marcos de datos son a menudo mucho más convenientes; uno no siempre tiene solo trozos atómicos de datos desperdigados.
Tenga en cuenta que puede tener una matriz de caracteres; no solo tiene que tener datos numéricos para construir una matriz en R.
Al convertir un marco de datos en una matriz, tenga en cuenta que existe una función data.matrix()
, que maneja los factores de manera apropiada convirtiéndola a valores numéricos basados en los niveles internos. La coerción a través de as.matrix()
dará como resultado una matriz de caracteres si cualquiera de las etiquetas de factores no es numérica. Compare:
> head(as.matrix(data.frame(a = factor(letters), B = factor(LETTERS))))
a B
[1,] "a" "A"
[2,] "b" "B"
[3,] "c" "C"
[4,] "d" "D"
[5,] "e" "E"
[6,] "f" "F"
> head(data.matrix(data.frame(a = factor(letters), B = factor(LETTERS))))
a B
[1,] 1 1
[2,] 2 2
[3,] 3 3
[4,] 4 4
[5,] 5 5
[6,] 6 6
que casi siempre utilizar una trama de datos para mis tareas de análisis de datos, que a menudo tienen más de las variables numéricas solo. Cuando codigo las funciones para los paquetes, casi siempre hago coerción a la matriz y luego formateo los resultados como un marco de datos. Esto se debe a que los marcos de datos son convenientes.
A menudo, una matriz puede ser más adecuado para un determinado tipo de datos, pero si el paquete que desea utilizar para analizar dicha matriz espera una trama de datos, siempre tendrá a convertirlo innecesariamente. Creo que no hay forma de evitar recordar qué paquete lo usa. – xApple