Tengo una matriz (32X48).
¿Cómo puedo convertir la matriz en una matriz unidimensional?
Léalo con 'scan', o simplemente haga como.vector () en la matriz. Es posible que desee transponer la matriz primero si lo desea por filas o columnas.
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
tratar c()
x = matrix(1:9, ncol = 3)
x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
c(x)
[1] 1 2 3 4 5 6 7 8 9
Si estamos hablando de data.frame, entonces debería preguntarse si las variables son del mismo tipo. Si ese es el caso, puede usar rapply o unlist, ya que data.frames son listas, en el fondo de sus almas ...
fuente
array(A)
oarray(t(A))
le dará una matriz 1-d.fuente
De
?matrix
: "Una matriz es el caso especial de una 'matriz' bidimensional". Simplemente puede cambiar las dimensiones de la matriz / matriz.fuente
Puede que sea muy tarde, de todos modos, esta es mi forma de convertir Matrix en vector:
espero que ayude
fuente
puede utilizar
as.vector()
. Parece que es el método más rápido según mi pequeño punto de referencia, de la siguiente manera:La primera solución usa
as.vector()
, la segunda usa el hecho de que una matriz se almacena como una matriz contigua en la memoria ylength(m)
da el número de elementos en una matrizm
. El tercero instancia unarray
fromx
, y el cuarto usa la función concatenarc()
. También probéunmatrix
a partirgdata
, pero es demasiado lento para ser mencionados aquí.Estos son algunos de los resultados numéricos que obtuve:
Aplanar una matriz es una operación común en Machine Learning, donde una matriz puede representar los parámetros a aprender, pero se usa un algoritmo de optimización de una biblioteca genérica que espera un vector de parámetros. Entonces, es común transformar la matriz (o matrices) en dicho vector. Es el caso de la función R estándar
optim()
.fuente
Puedes usar la solución de Joshua pero creo que necesitas
Elts_int <- as.matrix(tmp_int)
O para bucles:
z es un vector 1d.
fuente
Simple y rápido ya que una matriz 1d es esencialmente un vector
fuente
Si, en cambio, tenía un data.frame (df) que tenía varias columnas y desea vectorizar, puede hacerlo
como.matriz (gl, ncol = 1)
fuente