Convertir une matrice en un tableau à 1 Dimension
J'ai une matrice (32X48).
Comment puis-je convertir la matrice en un tableau unidimensionnel?
9 réponses
Lisez-le avec 'scan', ou faites simplement comme.vector() sur la matrice. Vous voudrez peut-être transposer la matrice en premier si vous le voulez par des lignes ou des 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
Si nous parlons de données.frame, alors vous devriez vous demander sont les variables du même type? Si c'est le cas, vous pouvez utiliser rapply, ou unlist, puisque les données.les cadres sont des listes, au fond de leur âme...
data(mtcars)
unlist(mtcars)
rapply(mtcars, c) # completely stupid and pointless, and slower
Essayez 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
From ?matrix
: "une matrice est le cas particulier d'un 'tableau' bidimensionnel."Vous pouvez simplement changer les dimensions de la matrice / tableau.
Elts_int <- as.matrix(tmp_int) # read.table returns a data.frame as Brandon noted
dim(Elts_int) <- (maxrow_int*maxcol_int,1)
Il pourrait être si tard, de toute façon voici ma façon de convertir la matrice en vecteur:
library(gdata)
vector_data<- unmatrix(yourdata,byrow=T))
J'espère que cela aidera
Vous pouvez utiliser la solution de Joshua mais je pense que vous avez besoin de Elts_int <- as.matrix(tmp_int)
Ou pour les boucles:
z <- 1 ## Initialize
counter <- 1 ## Initialize
for(y in 1:48) { ## Assuming 48 columns otherwise, swap 48 and 32
for (x in 1:32) {
z[counter] <- tmp_int[x,y]
counter <- 1 + counter
}
}
Z est un vecteur 1d.
, Simple et rapide depuis un tableau 1d est essentiellement un vecteur
vector <- array[1:length(array)]
Si vous aviez à la place une donnée.cadre (df) qui avait plusieurs colonnes et que vous souhaitez vectoriser vous pouvez faire
Comme.matrice (DF, ncol=1)