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

简单矩阵乘法报错:替换长度不匹配,结果仅首项正确

矩阵乘法自定义R函数的错误修正

错误原因解析

  1. 索引逻辑错误:代码中mat[j:i]是按矩阵的一维存储序列取元素范围,而非目标的第j行第i列单个元素。当j≠i时,这会返回多个元素,赋值给单个ans[i]时必然出现长度不匹配的报错,同时导致计算结果错误。
  2. 结果异常根源:首项正确是因为i=1时,j从1到3,mat[j:1]实际取的是mat[j,1](一维索引恰好对应第一列元素),但后续i=2、3时,索引范围错误导致计算值未正确累加。

修正后的代码

MyMatMult = function(vec, mat){
  # 结果向量长度与矩阵列数一致,避免硬编码
  ans = vector(mode = "numeric", length = ncol(mat))
  
  for (i in 1:ncol(mat)){
    for (j in 1:nrow(mat)){
      # 使用mat[j, i]获取第j行第i列元素,vec[1,j]明确取行向量的第j个元素
      ans[i] = ans[i] + vec[1, j] * mat[j, i]
    }
  }
  
  return(ans)
}

vec = matrix(data = 1:3, nrow = 1, ncol = 3)
mat = matrix(data = 1:9, nrow = 3, ncol = 3, byrow = T)

y = MyMatMult(vec, mat)
print(y)

运行结果

执行后输出[1] 30 36 42,与期望结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:15:04