我有一个对称矩阵,我想把它转换成R中的上三角/下三角矩阵,有没有这样做的方法?
我不能使用upper.tri
和lower.tri
做到这一点。使用它们可以得到一个矩阵,其中的项可以是TRUE
或FALSE
。
发布于 2014-10-15 15:58:21
要获得上三角矩阵,请执行以下操作:
mat <- matrix(1:9, 3, 3)
mat[lower.tri(mat)] <- 0
要删除对角线,请使用:
卡罗利斯在评论中建议的mat[lower.tri(mat,diag=TRUE)] <- 0
或mat[!upper.tri(mat)] <- 0
。
发布于 2017-06-13 23:16:43
虽然前面的答案是完美的,但the manual是你的朋友:
矩阵的
下三角部分和上三角部分
描述
返回与给定矩阵大小相同的逻辑矩阵,其下三角形或上三角形中的项为TRUE。
用法
lower.tri(x,diag = FALSE) upper.tri(x,diag = FALSE)
参数
一个矩阵。
诊断
合乎逻辑。应该包括对角线吗?
另请参阅
示例
(m2 <-矩阵(1:20,4,5)) lower.tri(m2) m2lower.tri(m2) <- NA m2
发布于 2018-04-03 12:16:29
一种简单的方法:
lower.triangle(X) #lower triangular
upper.triangle(X) #upper triangular
或者:
library(Matrix)
tril(X) #lower triangular
triu(X) #upper triangular
https://stackoverflow.com/questions/26377199
复制相似问题