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

R语言使用for循环创建主/反对角线为2其余为0的10×10矩阵

R中使用for循环生成指定对角线矩阵的实现方法

核心逻辑

10×10矩阵的位置判定规则非常简单:

  • 主对角线上的元素,行索引与列索引相等
  • 反对角线上的元素,行索引与列索引之和为11(n=10时,第i行对应的反对角线列位置为n+1 -i)
    先初始化全0矩阵,再通过for循环遍历对应位置赋值为2即可。

代码实现

写法1:双层for循环(最直观的遍历写法)

完全按照逐行逐列遍历的逻辑实现,符合for循环的基础使用要求:

# 初始化10*10全0矩阵
a <- matrix(0, nrow = 10, ncol = 10)

# 遍历每一行
for (i in 1:10) {
  # 遍历每一列
  for (j in 1:10) {
    # 判定当前位置是否在主/反对角线上
    if (i == j || i + j == 11) {
      a[i, j] <- 2
    }
  }
}

写法2:单层for循环(更简洁高效)

不需要逐列遍历,逐行处理时直接定位两个对角线位置赋值即可,同样满足for循环的要求:

a <- matrix(0, 10, 10)
for (i in 1:10) {
  a[i, i] <- 2 # 主对角线赋值
  a[i, 11 - i] <- 2 # 反对角线赋值
}

结果验证

运行上述任意一段代码后,输出的矩阵和你之前非循环方法得到的结果完全一致:

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    2    0    0    0    0    0    0    0    0     2
 [2,]    0    2    0    0    0    0    0    0    2     0
 [3,]    0    0    2    0    0    0    0    2    0     0
 [4,]    0    0    0    2    0    0    2    0    0     0
 [5,]    0    0    0    0    2    2    0    0    0     0
 [6,]    0    0    0    0    2    2    0    0    0     0
 [7,]    0    0    0    2    0    0    2    0    0     0
 [8,]    0    0    2    0    0    0    0    2    0     0
 [9,]    0    2    0    0    0    0    0    0    2     0
[10,]    2    0    0    0    0    0    0    0    0     2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:36:28