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

如何在R语言中基于现有矩阵生成符合指定运算规则的新矩阵

问题说明

现有1个30行12列的矩阵,需要基于原始矩阵生成新矩阵,运算规则如下:

  • 前6列的元素值为原始矩阵对应元素的2倍
  • 第7至11列的元素值为原始矩阵对应元素的1.5倍
  • 第12列元素值与原始矩阵完全一致
原代码错误原因

你写的代码核心问题是for循环的大括号配对错误:原代码在if(j<7)的逻辑执行完后就直接闭合了for循环的},导致else if和else分支完全在循环体外,不会随着j的遍历执行,最终只有前6列会被赋值,剩余列全为NA。

修正方案

1 修复原for循环写法

调整大括号位置,把所有条件分支都包裹在for循环内:

sales=matrix(rpois(360, 10), nrow=30)
sales_dol=matrix(, nrow=30, ncol=12)

for (j in 1:12) {
  if (j<7) {
    sales_dol[,j]=sales[,j]*2
  } else if (j<12){
    sales_dol[,j]=sales[,j]*1.5
  } else{
    sales_dol[,j]=sales[,j]
  } 
}

sales_dol

2 更高效的向量化写法(无需循环)

R支持矩阵的向量化运算,直接构造每列对应的乘数向量即可,代码更简洁执行效率更高:

sales <- matrix(rpois(360, 10), nrow=30)
# 按列指定乘数:前6列乘2,中间5列乘1.5,最后1列乘1
col_multiplier <- rep(c(2, 1.5, 1), c(6, 5, 1))
sales_dol <- sales * col_multiplier

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:06:00