R语言:如何提取矩阵的左上三角与右下三角?

R语言:如何提取矩阵的左上三角与右下三角?
尝试的代码如下:

> n[upper.tri(n)]<-t(n)[upper.tri(n)]
> n1<-n[,5:1]
> n1
     [,1] [,2] [,3] [,4] [,5]
[1,]    5    4    3    2    1
[2,]   10    9    8    7    2
[3,]   15   14   13    8    3
[4,]   20   19   14    9    4
[5,]   25   20   15   10    5
> n1[upper.tri(n1)]<-t(n1)[upper.tri(n1)]
> n1[,5:1]
     [,1] [,2] [,3] [,4] [,5]
[1,]   25   20   15   10    5
[2,]   20   19   14    9   10
[3,]   15   14   13   14   15
[4,]   10    9   14   19   20
[5,]    5   10   15   20   25

求解答!!!

如下代码,若解决望采纳,谢谢
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或者colnames进行修改

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)] <- 0
mat.1

生成下三角矩阵

mat.1[!lower.tri(mat.1, diag = TRUE)] <- 0
mat.1

提取时有warning无视即可
补全前先把NA转为0
R[is.na(R)] <- 0
然后就可以进行后续的提取了