Странное поведение с 3 аргументами мурлыкать :: накапливать? - PullRequest
0 голосов
/ 16 октября 2018

Это может / не может быть дубликатом Как я могу использовать функцию накапливать, как функцию 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"

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...