如何将向量变成R中的矩阵?


70

我有一个带有49个数值的向量。我想改用7x7的数字矩阵。

我可以使用某种方便的自动转换语句,还是必须将7个正确的向量子集的单独列分配给新矩阵?我希望有类似的东西c(myMatrix),当然可以选择给出我想要的行数和/或列数。


9
我不明白反对票。我知道这是一个初学者级的问题,但是我认为这些在这里已被接受。谷歌搜索问题并没有找到答案,因为几乎所有结果都是人们问如何做相反的事情(将矩阵转换为向量)。有人可以解释这个问题是什么吗?
rumtscho

可能是因为当我使用Google“在R中创建矩阵”时,几乎所有结果都将您指向该函数matrix。(但是

3
@joran我不是在谷歌搜索“创建矩阵”,而是在谷歌搜索“将向量转换为矩阵”和“将向量转换为矩阵”。必须知道,创建新矩阵可以将向量作为参数,以提出搜索“创建”的想法,这使其成为一种“鸡与蛋”问题:(但是,感谢您的解释。
rumtscho

3
当我谷歌“在R A向量转换为矩阵”的第一个结果是告诉你使用matrix
joran 2013年

Answers:


77

只需使用matrix

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

matrix正如Gavin指出的那样,使用而不是简单地更改维度属性的一个好处是,您可以使用中的byrow参数指定矩阵是按行还是按列填充matrix


49

矩阵实际上只是一个具有dim属性(用于尺寸)的向量。因此,您可以vec使用该dim()函数添加尺寸,vec然后将其作为一个矩阵:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.