web-dev-qa-db-fra.com

Comment transformer un vecteur en matrice en R?

J'ai un vecteur avec 49 valeurs numériques. Je veux plutôt une matrice numérique 7x7.

Puis-je utiliser une sorte d'instruction de conversion automatique pratique ou dois-je attribuer 7 colonnes séparées des sous-ensembles de vecteurs corrects à une nouvelle matrice? J'espère qu'il y a quelque chose qui ressemble à l'opposé de c(myMatrix), avec la possibilité de donner le nombre de lignes et/ou de colonnes que je souhaite, bien sûr.

51
rumtscho

Il suffit d'utiliser matrix:

matrix(vec,nrow = 7,ncol = 7)

L’avantage d’utiliser matrix plutôt que de modifier simplement l’attribut de dimension, comme le souligne Gavin, est que vous pouvez spécifier si la matrice est remplie par ligne ou par colonne en utilisant l’argument byrow dans matrix.

66
joran

Une matrice n'est en réalité qu'un vecteur avec un attribut dim (pour les dimensions). Vous pouvez donc ajouter des dimensions à vec à l'aide de la fonction dim() et vec sera alors une matrice:

vec <- 1:49
dim(vec) <- c(7, 7)  ## (rows, cols)
vec

> vec <- 1:49
> dim(vec) <- c(7, 7)  ## (rows, cols)
> vec
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    8   15   22   29   36   43
[2,]    2    9   16   23   30   37   44
[3,]    3   10   17   24   31   38   45
[4,]    4   11   18   25   32   39   46
[5,]    5   12   19   26   33   40   47
[6,]    6   13   20   27   34   41   48
[7,]    7   14   21   28   35   42   49
42
Gavin Simpson