在R中提取矩阵的次对角线和超对角线

8
正如标题所示,如何提取矩阵的子对角线和超对角线呢?
2个回答

14

使用 diag。对于超对角线,你只需丢弃最后一行和第一列。对于次对角线,丢弃第一行和最后一列:

m <- matrix(1:9,nrow=3)

> m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
> diag(m)
[1] 1 5 9
> diag(m[-nrow(m),-1])
[1] 4 8
> diag(m[-1,-ncol(m)])
[1] 2 6

1

您可能需要重新整理结果...

help(lower.tri)
help(upper.tri)
help(diag)

upper.tri和lower.tri不包括对角线。


2
请注意,upper.tri(x, TRUE) 包括对角线。 - kohske
@koshke 是的,如果你想要对角线,你可以覆盖默认的 diag=FALSE。 - Andrew B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接