R语言实现30×30矩阵值为对应行列序号乘积的方法
R 30×30矩阵赋值为行列序号乘积的实现方案
你可以用以下几种方式实现需求,优先推荐向量化操作的方案,运行效率更高:
- 方案1:直接使用
row()、col()函数(最简写法)
R内置的row()和col()可以直接返回矩阵每个位置对应的行号、列号,直接相乘赋值即可:
mat2 <- row(mat2) * col(mat2)
这行代码对任意尺寸的矩阵都适用,不需要修改参数就能直接复用。
- 方案2:嵌套循环实现(适合初学者理解逻辑)
如果需要明确遍历每个位置的赋值逻辑,可以用双重for循环实现:
for (i in seq_len(nrow(mat2))) { for (j in seq_len(ncol(mat2))) { mat2[i, j] <- i * j } }
小尺寸矩阵下该写法运行速度差异不大,矩阵超过1000×1000时更推荐用方案1的向量化写法。
- 方案3:创建矩阵时直接生成目标值
你也可以跳过初始化空矩阵的步骤,构造数据时直接生成乘积结果:
mat2 <- matrix(rep(1:30, each = 30) * rep(1:30, 30), nrow = 30, ncol = 30)
内容的提问来源于stack exchange,提问作者asfjnasopkd
相关产品推荐
相关产品推荐

