【问题标题】:How do I avoid "dimnames must be a list"-error when creating a matrix?创建矩阵时如何避免“dimnames must be a list”错误?
【发布时间】:2020-10-25 18:06:43
【问题描述】:

我正在复习我的线性代数技能。由于我的笔记本越来越乱,我正试图在 R 中创建我的矩阵。我希望这样我能设法避免随机错误。

我尝试创建一个三行六列的矩阵:

matrix(
    c(2,2,1,1,0,0),
    c(1,3,2,0,1,0), 
    c(1,3,6,0,0,1),
    nrow=3,
    ncol=6)

然后我收到一条错误消息,指出:

Error in matrix(c(2, 2, 1, 1, 0, 0), c(1, 3, 2, 0, 1, 0), c(1, 3, 6, 0,  : 
  'dimnames' must be a list

我不确定我是否理解这个问题。我已经指定了我的三行,并且帮助部分中没有任何内容声称需要命名任何内容?

【问题讨论】:

    标签: r matrix


    【解决方案1】:

    它没有说“dimnames 必须被命名”,它说“'dimnames' 必须是一个列表”。这是因为您在参数中提供了三个 c() 对象,而函数只需要第一个作为输入数据。只需包含一个c()

    matrix(
    c(   c(2,2,1,1,0,0),
        c(1,3,2,0,1,0), 
        c(1,3,6,0,0,1) 
    ),
        nrow=3,
        ncol=6)
    

    或者从一开始就将所有数字放在一个c() 中。而且你实际上不需要同时指出nrowncol,一个就足够了:

    matrix(
    c(2,2,1,1,0,0,
     1,3,2,0,1,0, 
     1,3,6,0,0,1),
      nrow=3)
    

    【讨论】:

    • 这就是我最终解决问题的方法,尽管我还必须将 byrow 参数设置为 TRUE 才能使其工作。
    【解决方案2】:

    创建矩阵的简单方法是绑定向量:

    rbind(
      c(2,2,1,1,0,0),
      c(1,3,2,0,1,0), 
      c(1,3,6,0,0,1))
    
    

    【讨论】:

      【解决方案3】:

      使用rbind 对一系列向量进行行绑定,或者将一个单个 向量提供给matrix 函数。请注意,如果选择选项 2,则需要设置 byrow=TRUE,因为默认情况下 matrix 是主要列。

      rbind(c(2,2,1,1,0,0),
            c(1,3,2,0,1,0), 
            c(1,3,6,0,0,1))
      #>      [,1] [,2] [,3] [,4] [,5] [,6]
      #> [1,]    2    2    1    1    0    0
      #> [2,]    1    3    2    0    1    0
      #> [3,]    1    3    6    0    0    1
      
      matrix(
          c(2,2,1,1,0,0,
            1,3,2,0,1,0, 
            1,3,6,0,0,1),
          nrow=3,
          ncol=6,
          byrow=TRUE)
      #>      [,1] [,2] [,3] [,4] [,5] [,6]
      #> [1,]    2    2    1    1    0    0
      #> [2,]    1    3    2    0    1    0
      #> [3,]    1    3    6    0    0    1
      

      【讨论】:

        猜你喜欢
        • 2022-11-16
        • 2023-01-04
        • 2021-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-07
        • 2017-12-03
        相关资源
        最近更新 更多