生成一个整数的三角矩阵,增加1

时间:2017-06-19 20:27:43

标签: r matrix

我正在尝试生成下面形式的可变维度矩阵(即,一次增加1的整数,以及较低的三角形NAs)

NA  1  2  3  4 
NA NA  5  6  7
NA NA NA  8  9
NA NA NA NA  10
NA NA NA NA  11

我使用了以下代码

sample_vector <- c(1:(total_nodes^2))
sample_matrix <- matrix(sample_vector, nrow=total_nodes, byrow=FALSE)
sample_matrix[lower.tri(sample_matrix, diag = TRUE)] <- NA

然而,我用这种方法获得的矩阵的形式如下:

NA  2  3  4  5
NA NA  8  9  10
NA NA NA  14 15
NA NA NA NA  20
NA NA NA NA  25

2 个答案:

答案 0 :(得分:4)

这个怎么样

total_nodes <- 5
sample_matrix <- matrix(NA, nrow=total_nodes, ncol=total_nodes)
sample_matrix[lower.tri(sample_matrix)]<-1:sum(lower.tri(sample_matrix))
sample_matrix <- t(sample_matrix)
sample_matrix
#     [,1] [,2] [,3] [,4] [,5]
# [1,]   NA    1    2    3    4
# [2,]   NA   NA    5    6    7
# [3,]   NA   NA   NA    8    9
# [4,]   NA   NA   NA   NA   10
# [5,]   NA   NA   NA   NA   NA

答案 1 :(得分:1)

我正在使用diag函数构建矩阵,upper.tri将其转换为“目标”以及逻辑索引工具:

 upr5 <- upper.tri(diag(5))
 upr5
 upr5[upr5] <- 1:sum(upr5)
 upr5[upr5==0] <- NA   # would otherwise have been zeroes
 upr5
     [,1] [,2] [,3] [,4] [,5]
[1,]   NA    1    2    4    7
[2,]   NA   NA    3    5    8
[3,]   NA   NA   NA    6    9
[4,]   NA   NA   NA   NA   10
[5,]   NA   NA   NA   NA   NA