r - 在 R 矩阵的对角线上方插入数字

标签 r diagonal

我在 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/

相关文章:

css - 圆形对 Angular 线 css

matlab - MATLAB 中的矩阵到对角矩阵

c# - 将对角线延长一个值

r - 从 R 中具有不同列的另一个 data.frame 更新 data.frame

r - 尝试使命令行以向量作为参数从零位置开始绘制

r - 如何将表转换为 r 中的数据框?

html - CSS 倾斜背景(不是全宽/有点不同)

r - 为什么observeEvent 不重新评估它的内容?

r - 使用 R - 如何将 2 个气泡图集成到一个图中

java - 如何对角线移动可见图像?