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

R语言中1×10与10×1矩阵使用%*%相乘返回NA的原因是什么?

问题原因

  • 构造向量的语法错误:R 中拼接多个元素生成向量需要使用c()函数,你当前使用的圆括号()仅用于调整运算优先级,无法将多个元素组合为合法的向量对象,会直接导致 x、y 定义失败,甚至对象本身为NA或未生成,执行乘法自然返回NA。
  • 若要严格执行矩阵乘法,一维普通向量默认无维度属性,虽然%*%对普通向量支持点积运算,但如果对象属性异常也可能触发结果异常。

解决方法

方法1:直接计算点积

修正向量定义语法后直接运算即可,%*%可自动适配普通向量的点积计算:

# 正确构造x向量
x <- c(1,-0.00247043,-0.002320707,-0.002170984,-0.003518491,-0.002695014,-0.001871538,-0.002395568,-0.003069322,-0.003817937)
# 正确构造y向量
y <- c(6.911842e-06,-6.940286e-06,-3.648303e-06,3.664410e-07,-4.102516e-07,-3.479830e-06,-5.308621e-06,-3.571418e-06,-4.058502e-06,-4.058502e-06)
# 执行点积运算
res <- x %*% y

方法2:严格按矩阵规则运算

将向量转为对应维度的矩阵后执行乘法:

# 转为1行10列矩阵
x_mat <- matrix(x, nrow = 1, ncol = 10)
# 转为10行1列矩阵
y_mat <- matrix(y, nrow = 10, ncol = 1)
# 矩阵乘法
res <- x_mat %*% y_mat

运行以上代码即可得到正确的运算结果,返回值约为7.13481e-06。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:27:02