这可能/可能不是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"
我想念什么吗?