将元素添加到R中不是正方形的矩阵的对角线

时间:2013-08-13 19:26:37

标签: r matrix

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

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

当tau是方形矩阵时,上面的代码有效,但现在想象tau不是正方形。如何将nug添加到tau的每个i,j元素中,其中i = j?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

你可以这样做:

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