了解累加函数的工作原理

我阅读了使用手册accumulate,说它是一个 2 参数函数。我不明白给定的例子:

1:5 %>% accumulate(`+`)
#> [1]  1  3  6 10 15
1:5 %>% accumulate(`+`)
#> [1]  1  3  6 10 15

如果accumulate是一个 2 参数函数,它输出的第一个元素应该是3?因为1+2=3,为什么第一个元素可以作为输出?

回答

accumulate是一个双参数函数,其中第一个参数是向量,第二个参数是函数。它的输出也是一个与输入长度相同的向量,除非.init提供,在这种情况下它将比输入长度大一个长度。

1:5 %>% accumulate(`+`)

#means

accumulate(1:5, `+`)

现在,accumulate通过在提供的向量的各个元素之间滚动提供的函数来计算输出。由于operation作为输出的第二个参数提供的需要两个元素,即(i)前一个元素的输出和(ii)下一个元素,逻辑上第一次它可以在不应用任何操作的情况下输出输入向量的相同元素。

即使.init提供了,情况也会相同,在这种情况下,输出向量的第一个元素将等于提供的.init。(见罗纳克的例子)

library(purrr)
1:5 %>% accumulate(`+`, .init = 3)
#[1]  3  4  6  9 13 18

现在检查输出向量中是否有六个元素,尽管输入向量中有五个元素 (1:5)。

给定输出的第一个元素应该3是正确的逻辑是正确的,但在大多数情况下,输出向量的要求与输入的长度相同。因此,开发者可能会想到将第一个元素本身包括在内,而无需任何功能的操作/应用。


以上是了解累加函数的工作原理的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>