r - 使用 purrr::reduce() 进行迭代

标签 r reduce purrr

给定一个具有初始值 a = 3 的函数 f(a, x) = a*x,假设有一个迭代,其中 a 在下一步中分配有 f(a, x)

  • 对于 x = 2a 被赋值为 f(3, x = 2) = 6,然后;
  • 对于 x = 3a 被赋值为 f(6, x = 3) = 18,然后;
  • 对于 x = 4a 分配为 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/

相关文章:

r - 如何自动防止 Sweave 中的 R 输入超出右边距?

JavaScript:循环遍历对象数组并使用Reduce函数查找特定键的总和

r - 在 R 中每行应用函数

r - 以编程方式在 Markdown 中创建选项卡和绘图

r - 将不等长列表的列表转换为数据帧

r - 如何触发 Shiny 的数据刷新?

r - 根据由冒号和连接向量定义的序列字符串创建长数据格式

javascript - 抛出预期错误 : RangeError: Invalid array length

hadoop - 一组中的所有记录都调用一次 'reduce' 吗?

r - 以编程方式获取基础包列表