1

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

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

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

4

2 回答 2

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
于 2013-08-13T19:33:54.243 回答
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
于 2013-08-13T19:37:19.907 回答