【问题标题】:Reduce lists by summing element-wise in purrr通过在 purrr 中按元素求和来减少列表
【发布时间】:2017-09-07 04:47:49
【问题描述】:

我正在尝试使用purrr 对具有相同索引的列表元素求和。这可以使用以下方法在基础 R 中实现:

xx <- list(a = c(1,2,3,4,5), b = c(1,2,3,4,5))
Reduce("+", xx)

提供:

[1]  2  4  6  8 10

太棒了!这就是我需要的,但我想在purrr 中完成这一切。 %&gt;% reduce(sum) 返回一个值。有谁知道purrr 中的语法吗?

编辑-我忘了指定,这需要适用于 n 个列表。

【问题讨论】:

  • %&gt;% 不是基础 R 运算符。它是magrittr 包的一部分。基数 R 将是 Reduce("+", xx)do.call("+", xx)
  • 不是一个有用的评论,但我已经编辑了我的问题。
  • 我不是要喷,但请注意,R 标签中的初始声明说“R 是一种免费的开源编程语言和软件环境,用于统计计算、生物信息学和图形学。请用一个可重复的最小示例来补充您的问题。使用 dput() 获取数据,并使用库调用指定所有非基础包。"

标签: r tidyverse purrr


【解决方案1】:

你可以这样做(s.?reduce):

   xx %>% reduce(`+`)
   [1]  2  4  6  8 10

【讨论】:

  • 这很漂亮,甜菜根...我想知道,为什么这行得通,但 xx %&gt;% reduce(sum) 不行?第二个选项会将所有值汇总为一个,而不是按位置...
  • @JavierFajardo as sum 首先将两个列表的值相加,reduce 只剩下两个值(15 + 15 = 30)。
猜你喜欢
  • 1970-01-01
  • 2014-10-13
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多