我有一个向量,比如说
a = c(1,2,3,4,5,6)
我希望将它们按行排列成一个上三角矩阵(不考虑对角线元素,它们都是零)。我的目标是得到以下矩阵:
[,1] [,2] [,3] [,4]
[1,] 0 1 2 3
[2,] 0 0 4 5
[3,] 0 0 0 6
[4,] 0 0 0 0
但我通常会采用以下方法:将对角线元素替换为向量,但按列分配值。例如:
b= matrix(0, 4, 4)
b[upper.tri(b, diag=FALSE)]=a
它将给我以下矩阵
[,1] [,2] [,3] [,4]
[1,] 0 1 2 4
[2,] 0 0 3 5
[3,] 0 0 0 6
[4,] 0 0 0 0
原因在于当 R 给矩阵分配值时,默认情况下,它将按列进行分配。我想知道是否有一种简单的方法可以解决我的问题,而不必编写 for 循环。
我之前找到过一个与我的问题相关的类似帖子,但它没有解释如何按行分配值到上三角矩阵:
提前致谢!