将R中的矩阵转换为具有相应条目的上三角/下三角矩阵

Anu*_*hra 18 r matrix

我有一个对称矩阵,我想把它转换成R中的上三角/下三角矩阵.有没有办法做到这一点?

我无法使用upper.trilower.tri.使用这些给我一个矩阵,条目为TRUEFALSE.

Ujj*_*wal 30

要获得上三角矩阵:

mat <- matrix(1:9, 3, 3)
mat[lower.tri(mat)] <- 0
Run Code Online (Sandbox Code Playgroud)

要删除对角线,请使用:

mat[lower.tri(mat,diag=TRUE)] <- 0或者mat[!upper.tri(mat)] <- 0如Karolis的评论中所建议的那样.


ser*_*inc 5

虽然以前的答案是完美的,但手册是您的朋友:

矩阵的上下三角部分

描述

返回一个与给定矩阵大小相同的逻辑矩阵,其下三角或上三角中的条目为 TRUE。

用法

lower.tri(x, diag = FALSE)
upper.tri(x, diag = FALSE)
Run Code Online (Sandbox Code Playgroud)

参数

x     
Run Code Online (Sandbox Code Playgroud)

一个矩阵。

diag
Run Code Online (Sandbox Code Playgroud)

合乎逻辑。是否应该包括对角线?

也可以看看

诊断矩阵

例子

(m2 <- matrix(1:20, 4, 5))
lower.tri(m2)
m2[lower.tri(m2)] <- NA
m2
Run Code Online (Sandbox Code Playgroud)


小智 5

一个简单的方法:

library(matrixcalc)

lower.triangle(X) #lower triangular

upper.triangle(X) #upper triangular
Run Code Online (Sandbox Code Playgroud)

或者:

library(Matrix)

tril(X) #lower triangular

triu(X) #upper triangular
Run Code Online (Sandbox Code Playgroud)

  • lower.triangle(X) #下三角(函数未找到!) (4认同)
  • @JStrahl您需要安装matrixcalc包才能使用lower.triangle(X)和upper.triangle(X)。install.packages("matrixcalc") 然后是库(matrixcalc) (2认同)