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

如何用dplyr对嵌套列表按组进行逐元素均值计算?

解决列表列按组计算逐元素均值的问题

嘿,我来帮你搞定这个需求!你遇到的问题是因为mean()函数没办法直接处理列表类型的列,所以才会返回NA和警告。咱们得换个思路,先把组内的列表转换成矩阵,再计算每列的均值,最后再转回列表格式就行啦。

解决方案代码

首先加载需要的包(dplyr用于分组处理):

library(dplyr)

# 你的原始数据
df <- data.frame(X1 = c(1,2,2))
df$X2 <- list(list(1, 2), list(0, 1), list(1,0))

# 按X1分组计算逐元素均值
result <- df %>%
  group_by(X1) %>%
  summarise(mean = list(colMeans(do.call(rbind, X2))))

# 查看结果
result

代码解释

  • do.call(rbind, X2):把每个组里的所有列表元素,先转换成数值向量,再合并成一个矩阵。比如X1=2的组里,两个列表list(0,1)和list(1,0)会被转成rbind(c(0,1), c(1,0)),得到一个2行2列的矩阵。
  • colMeans():对这个矩阵的每一列计算均值,这样就得到了逐元素的平均值,比如X1=2的组会得到c(0.5, 0.5)。
  • list():把计算出来的均值向量包装成列表,这样结果里的mean列就和原始的X2列保持一样的列表格式啦。

输出结果

运行上面的代码后,你会得到:

# A tibble: 2 × 2
     X1 mean     
  <dbl> <list>   
1     1 <dbl [2]>
2     2 <dbl [2]>

如果想看具体的均值内容,可以用result$mean查看:

[[1]]
[1] 1 2

[[2]]
[1] 0.5 0.5

完全符合你想要的结果!

内容的提问来源于stack exchange,提问作者Antoine C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:21:35