我总共有55个数值列表。我想创建一个10x10矩阵,其中仅填充下(或上)三角形矩阵(对角线本身)。我知道可以使用lower.tri()
创建一个较低的三角矩阵,但是,当我使用此函数时,似乎数据没有按行填充。如果我使用matrix(v, nrow= 10, ncol= 10, byrow= TRUE)
,则会填充完整的矩阵,而不仅仅是较低的对角线。我已经看到了类似问题(Fill lower matrix with vector by row, not column)的解决方案,但是在该示例中,它们仅使用6个变量,而我有10个变量,因此该解决方案对我来说是失真的。
v <- 1:55
m <- diag(10)
答案 0 :(得分:0)
一个简单的技巧就可以做到。例如,按行填充下三角矩阵。首先,按列填充上三角矩阵(默认情况下),然后变换矩阵。反之亦然。
由于R默认情况下会在列中填充矩阵,因此只需先填充转换后的矩阵,然后将其转换回去。
代码示例
m = diag(10)
upperm = upper.tri(m, diag = T)
m[upperm] = v; t(m)