J'ai une matrice (32X48).
Comment puis-je convertir la matrice en un tableau unidimensionnel?
Soit le lire avec 'scan', soit simplement faire as.vector () sur la matrice. Vous voudrez peut-être d'abord transposer la matrice si vous le souhaitez par lignes ou colonnes.
> 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
essayer 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 nous parlons de data.frame, alors vous devriez vous demander si les variables sont du même type? Si tel est le cas, vous pouvez utiliser rapply, ou unlist, car les data.frames sont des listes, au plus profond de leur âme ...
la source
array(A)
ouarray(t(A))
vous donnera un tableau 1-d.la source
From
?matrix
: "Une matrice est le cas particulier d'un 'tableau' bidimensionnel." Vous pouvez simplement changer les dimensions de la matrice / tableau.la source
Il est peut-être si tard, de toute façon, voici ma façon de convertir Matrix en vecteur:
j'espère que cela aidera
la source
vous pouvez utiliser
as.vector()
. Il semble que ce soit la méthode la plus rapide selon mon petit benchmark, comme suit:La première solution utilise
as.vector()
, la seconde utilise le fait qu'une matrice est stockée sous forme de tableau contigu en mémoire etlength(m)
donne le nombre d'éléments dans une matricem
. Le troisième instancie unarray
fromx
et le quatrième utilise la fonction de concaténationc()
. J'ai aussi essayéunmatrix
degdata
, mais c'est trop lent pour être mentionné ici.Voici quelques-uns des résultats numériques que j'ai obtenus:
L'aplatissement d'une matrice est une opération courante en Machine Learning, où une matrice peut représenter les paramètres à apprendre mais on utilise un algorithme d'optimisation d'une bibliothèque générique qui attend un vecteur de paramètres. Il est donc courant de transformer la matrice (ou les matrices) en un tel vecteur. C'est le cas de la fonction R standard
optim()
.la source
Vous pouvez utiliser la solution de Joshua mais je pense que vous avez besoin
Elts_int <- as.matrix(tmp_int)
Ou pour les boucles:
z est un vecteur 1d.
la source
Simple et rapide car un tableau 1d est essentiellement un vecteur
la source
Si vous aviez à la place un data.frame (df) qui avait plusieurs colonnes et que vous souhaitez vectoriser, vous pouvez le faire
as.matrix (df, ncol = 1)
la source