You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用seq()函数按行填充矩阵?实现特定三角矩阵需求

修正矩阵填充代码实现三角矩阵需求

你已创建一个6行6列的全NA矩阵:

matrixinp = matrix(data=NA, nrow=6, ncol=6) 

现有填充代码运行后得到不符合预期的结果:

[,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    2    3    1    2    3
[2,]    1    2    3    1    2    3
[3,]    1    2    3    1    2    3
[4,]    1    2    3    1    2    3
[5,]    1    2    3    1    2    3
[6,]    1    2    3    1    2    3

你的目标是生成每行前i个元素为seq(i)(第1行前1个元素是1,第2行前2个是1、2,以此类推),其余元素保持NA的三角矩阵:

[,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    NA   NA   NA   NA   NA
[2,]    1    2    NA   NA   NA   NA
[3,]    1    2    3    NA   NA   NA
[4,]    1    2    3    4    NA   NA
[5,]    1    2    3    4    5    NA
[6,]    1    2    3    4    5    6

解决方案

方法1:逐行循环填充

通过遍历矩阵的每一行,对第i行的前i个位置直接赋值seq(i):

matrixinp = matrix(data=NA, nrow=6, ncol=6) 

for (i in 1:nrow(matrixinp)) {
  matrixinp[i, 1:i] = seq(i)
}

print(matrixinp)

方法2:向量化操作(无需循环)

利用矩阵的索引特性直接生成结果,避免循环:

matrixinp = matrix(data=NA, nrow=6, ncol=6) 

# 生成行号和列号的矩阵
row_idx <- row(matrixinp)
col_idx <- col(matrixinp)

# 仅对列号≤行号的位置赋值为对应列号,其余保持NA
matrixinp[col_idx <= row_idx] <- col_idx[col_idx <= row_idx]

print(matrixinp)

两种方法均可得到你期望的三角矩阵结果。

内容的提问来源于stack exchange,提问作者Paolo Lorenzini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:05:03