给定一个具有初始值 a = 3
的函数 f(a, x) = a*x
,假设有一个迭代,其中 a
在下一步中分配有 f(a, x)
。
- 对于
x = 2
,a
被赋值为f(3, x = 2) = 6
,然后; - 对于
x = 3
,a
被赋值为f(6, x = 3) = 18
,然后; - 对于
x = 4
,a
分配为f(18, x = 4) = 72
;
如何使用purrr
实现迭代?下面的说法不太正确。
library(purrr)
a <- 3
f <- function(a, x) a*x
2:4 %>% reduce(~f(a, .))
#> [1] 18
2:4 %>% accumulate(~f(a, .))
#> [1] 2 6 18
由reprex package于2020年4月24日创建(v0.3.0)
最佳答案
你似乎在这儿
2:4 %>% accumulate(~f(.y, .x), .init=3)
# [1] 3 6 18 72
.x
值代表您之前的值,而 .y
是您正在输入的向量中的下一个元素。而不是对 进行硬编码a=3
在函数中,我们通过 .init=
将其传递给它,仅在第一次迭代时发生。
关于r - 使用 purrr::reduce() 进行迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61419718/