R语言对称矩阵提取上三角/下三角矩阵?

目标

输入矩阵

      col.1 col.2 col.3 col.4
row.1     1     2     3     4
row.2     5     6     7     8
row.3     9    10    11    12
row.4    13    14    15    16

输出矩阵

      col.1 col.2 col.3 col.4
row.1     1     2     3     4
row.2     0     6     7     8
row.3     0     0    11    12
row.4     0     0     0    16

代码

mat.1 <- matrix(1:16, # 1—16个向量
                ncol = 4, # 4列
                nrow = 4, # 4行
                byrow=TRUE, # byrow=T 表示向量按行的顺序进行,默认的话,会按列的顺序进行排列
                dimnames = list(c(paste("x", 1:4, sep = ".")), # 对维度(行列)进行命名, 可以这么看list(x,y) 表示行列
                                c(paste("y", 1:4, sep = ".")))) # x由x.1....x.4组成,y由y.1....y.4组成
mat.1
rownames(mat.1) <- paste("row", 1:4, sep=".")
colnames(mat.1) <- paste("col", 1:4, sep=".")
mat.1
# 生成上三角矩阵
# diag参数如果为TRUE,表示把矩阵对角也包括进来。设置为FALSE就是不包括。
# mat.1[!upper.tri(mat.1, diag = TRUE)] <- ""
mat.1[!upper.tri(mat.1, diag = TRUE)] <- 0
mat.1
mat.1[!upper.tri(mat.1, diag = F)] <- NA
mat.1

# 生成下三角矩阵
mat.1[!lower.tri(mat.1, diag = TRUE)] <- 0
mat.1

Ref:https://ask.csdn.net/questions/755432

posted @ 2023-04-13 22:45  生物信息与育种  阅读(248)  评论(0编辑  收藏  举报