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(mat.1) <- paste("row", 1:4, sep=".")
colnames(mat.1) <- paste("col", 1:4, sep=".")
mat.1
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
然后就可以进行后续的提取了