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

R语言如何用mutate结合crossprod为数据框新增sumproduct计算列

报错原因

crossprod()要求输入为数值矩阵/向量类型,直接传入data.frame类对象会触发类型不匹配错误。

实现方法

方法1:基础R矩阵运算(推荐,效率最高)

直接将数据框转为矩阵后做矩阵乘法即可得到逐行乘积求和结果,适合大数据量场景:

dataframe <- data.frame(a = c(1, 1, 1), b = c(0, 1, 0), c = c(1, 1, 0))
nums <- c(100, 200, 300)
# 新增d列
dataframe$d <- as.vector(as.matrix(dataframe) %*% nums)

运行结果中的d列值为c(400, 600, 100),完全符合需求。

方法2:dplyr管道写法(适合tidyverse代码流)

如果你的代码统一使用dplyr管道逻辑,可以在mutate中直接处理:

library(dplyr)
dataframe <- dataframe %>%
  mutate(d = as.vector(as.matrix(.) %*% nums))

方法3:dplyr rowwise写法(可读性最高)

如果更看重代码可读性,不需要极致性能,可以用逐行运算的写法:

library(dplyr)
dataframe <- dataframe %>%
  rowwise() %>%
  mutate(d = sum(c_across(everything()) * nums)) %>%
  ungroup()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:06:03