Это может / не может быть дубликатом Как я могу использовать функцию накапливать, как функцию Redu2 в purrr? , но я действительно не мог понять обсуждаемый здесь случай, поэтому снова спрашиваю об этом.
Я пытаюсь понять работу purrr::accummulate
особенно при передаче 3 аргументов.Вот документация для него -
.x - Список или атомарный вектор.
.f - Для redu (), функция с двумя аргументами.Функция будет передавать накопленное значение в качестве первого аргумента и «следующее» значение в качестве второго аргумента.Для redu2 () - функция с тремя аргументами.Функция будет передавать накопленное значение в качестве первого аргумента, следующее значение .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"
Я что-то упустил?