【问题标题】:How to turn a vector into a matrix in R?如何将向量转换为R中的矩阵?
【发布时间】:2013-01-14 21:57:12
【问题描述】:

我有一个包含 49 个数值的向量。我想要一个 7x7 数字矩阵。

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

【问题讨论】:

  • 我不明白反对意见。我知道这是一个初学者级别的问题,但我认为这些在这里被接受。谷歌搜索这个问题没有找到答案,因为几乎所有结果都是人们问如何做相反的事情(将矩阵转换为向量)。有人可以解释一下这个问题有什么问题吗?
  • 可能是因为当 I 谷歌“在 R 中创建矩阵”时,几乎每个结果都指向函数 matrix。 (不过,Gavin 的解决方案不太容易被发现。)
  • @joran 我不是在谷歌搜索“创建矩阵”,而是在谷歌搜索“将向量转换为矩阵”和“将向量转换为矩阵”。必须知道创建一个新矩阵可以将向量作为参数,以便提出搜索“创建”的想法,这使它成为一个先有鸡还是先有蛋的问题:(但感谢您的解释.
  • 当我谷歌“将向量转换为 R 中的矩阵”时,第一个结果是 this,它告诉你使用 matrix

标签: r vector matrix


【解决方案1】:

只需使用matrix:

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

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

【讨论】:

    【解决方案2】:

    矩阵实际上只是一个带有dim 属性的向量(用于维度)。因此,您可以使用dim() 函数为vec 添加维度,然后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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-12
      • 2018-07-17
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多