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

如何对DataFrame中以列表存储的矩阵按分组执行矩阵加法?

可以实现,你原有代码无法得到预期结果的核心原因是sum()作用于存储矩阵的列表时,会扁平化所有元素返回全局求和的单个数值,不会执行矩阵对位加法。可以通过Reduce()函数实现分组矩阵累加,修改后的可运行代码如下:

library(dplyr)
# 构造示例数据
mtx <- matrix(data=1:9,ncol=3)
df <- data.frame(gp=c("a","a","b","c"),data=NA)
df$data[1] <- list(mtx)
df$data[2] <- list(mtx)
df$data[3] <- list(mtx)
df$data[4] <- list(mtx)

# 按分组累加矩阵的核心代码
df2 <- df %>% 
  group_by(gp) %>% 
  summarise(total = list(Reduce(`+`, data)))

# 验证结果和预期一致
# 查看a组的累加结果
print(df2$total[df2$gp == "a"][[1]])

运行后a组输出的矩阵就是2倍的原始矩阵,和你期望的df3结果完全匹配。
核心逻辑说明:

  • Reduce(+, data)会对当前分组内data列存储的所有矩阵,按顺序执行对位加法,最终返回一个累加完成的矩阵
  • 外层套list()是为了将生成的矩阵作为单个元素存入数据框单元格,避免矩阵被自动展开为多列,保持你需要的矩阵存储格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:39:03