我在 R 中有一个这样的向量:
vec1 <- c(14000,12000,8000)
我正在尝试创建一个矩阵,其中 14000 是我的主对角线,1200 是对角线上方的一个,8000 是对角线上方的两个。
我熟悉在 Python/numpy 中执行此操作,但无法在 R 中弄清楚(或至少是一种有效的方法)。理想情况下,输出如下所示:
14000 12000 8000
0 14000 12000
0 0 14000
最佳答案
尝试
m1 <- t(matrix(vec1, nrow=5, ncol=3))[,1:3]
m1[lower.tri(m1)] <- 0
m1
# [,1] [,2] [,3]
#[1,] 14000 12000 8000
#[2,] 0 14000 12000
#[3,] 0 0 14000
或使用
toeplitz
toeplitz(vec1)*upper.tri(diag(seq_along(vec1)), diag=TRUE)
# [,1] [,2] [,3]
#[1,] 14000 12000 8000
#[2,] 0 14000 12000
#[3,] 0 0 14000
或@David Arenburg 建议的修改
m <- toeplitz(vec1)
m[lower.tri(m)] <- 0
关于r - 在 R 矩阵的对角线上方插入数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829659/