3参数purrr :: accumulate的怪异行为?

时间:2018-10-16 15:58:24

标签: r purrr

这可能/可能不是How can I use accumulate like reduce2 function in purrr?的副本,但我无法真正理解那里正在讨论的情况,因此请再次提出。

我试图理解purrr::accummulate的工作原理,尤其是在传递3个参数时。这是它的文档-

  

.x-列表或原子向量。

     

.f-对于reduce(),是2参数函数。   该函数将作为第一个传递累计值   参数,“ next”值作为第二个参数。对于reduce2(),一个   3参数功能。该函数将传递累计值   作为第一个参数,.x的下一个值作为第二个参数,   和 .y的下一个值作为第三个参数

基于上述文档-

library(purrr)

# 2-argument use is pretty straightforward
accumulate(.x = 1:3, .f = sum)
[1] 1 3 6 # 1, 1+2, 1+2+3

# 3-argument result seems weird
accumulate(.x = 1:3, .y = 1:2, .f = sum)
[1]  1  6 12 # seems like 1, 1+2+3, 1+2+3+3+3
# expecting 1 4 9 i.e. 1, 1+2+1, 1+2+1+3+2

# reduce2 works correctly and gives 9
reduce2(.x = 1:3, .y = 1:2, .f = sum)
[1] 9

# it seems to take sum(y) as third argument instead of "next value of .y"

我想念什么吗?

0 个答案:

没有答案