【问题标题】:Adding elements to the diagonal of a matrix that is not square in R将元素添加到R中非正方形矩阵的对角线
【发布时间】:2013-08-13 19:26:37
【问题描述】:

我希望能够在 i = j 的矩阵的 i,j 条目中添加一个值(在我的代码 nug 中)(就像 Kronecker delta 函数)。当矩阵是正方形时它很容易做到(见下面我的代码)但是我不确定当矩阵不是正方形时如何在一行中做到这一点

nug = 2
R = tau + diag(nug,nrow(tau))

上面的代码在 tau 是方阵时有效,但现在假设 tau 不是方阵。我如何将nug 添加到tau 的每个 i,j 元素中,其中 i = j?

【问题讨论】:

    标签: r matrix


    【解决方案1】:
    m <- matrix(1:6, ncol = 2)
    m
         [,1] [,2]
    [1,]    1    4
    [2,]    2    5
    [3,]    3    6
    diag(m) <- diag(m) + 1:2
    m
         [,1] [,2]
    [1,]    2    4
    [2,]    2    7
    [3,]    3    6
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      m[col(m)==row(m)] <- m[col(m)==row(m)] +nug 
      

      使用零矩阵来表示:

      m <- matrix(rep(0,6), ncol = 2)
      > m[col(m)==row(m)] <- m[col(m)==row(m)] +2
      > m
           [,1] [,2]
      [1,]    2    0
      [2,]    0    2
      [3,]    0    0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 2014-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多