如何在R中对同维度数据框列表进行逐元素求和?
解决方法
Base R 方案
直接用Reduce()函数,它能把二元操作(这里是逐元素相加的+)批量应用到列表的所有元素上,完美适配长度不固定的列表:
# 示例:创建3个同维度的数据框列表 mylist <- list( data.frame(a = 1:3, b = 4:6), data.frame(a = 2:4, b = 5:7), data.frame(a = 3:5, b = 6:8) ) # 计算所有数据框的逐元素和 total_sum <- Reduce("+", mylist)
运行后total_sum就是所有数据框对应位置元素相加的结果。
tidyverse 方案
如果你习惯用tidyverse工具链,可以用purrr包的reduce()函数,用法和Base R的Reduce()一致:
library(purrr) total_sum <- reduce(mylist, `+`)
这两种方法都不需要手动写循环或者逐个相加,列表长度变化时代码完全不需要修改。
内容的提问来源于stack exchange,提问作者kccu
相关产品推荐
相关产品推荐

