我想实现的一般是,我可以做到以下几点:
df %>%
exampleFunction(1) %>%
exampleFunction(2) %>%
exampleFunction(3) %>%
...
exampleFunction(n)
而exampleFunction应该是这样的:
exampleFunction <- function(data, value) {
#something is done here with the data and value...
#...and then a new data is returned
}
那么,如何才能实现这一目标呢?
当然,我总是可以用途:
eval(parse(text="(some dynamically generated code as string)")
……但我不想。:)
1条答案
按热度按时间ztyzrc3y1#
请记住,管道(本质上)是嵌套函数调用的快捷方式。因此,您的管道大致相同:
这是一个推广的代码
1 + 2 + 3 + … + n
(与+
取代exampleFunction
,其中df
采取的第一个数字)。这种模式在函数式编程中被称为 reduction。Core R在Reduce()
函数中实现了它,各种其他软件包实现了它们自己的变体(例如:‘purrr’)。用法如下:
对你来说就是
或者,您也可以使用
for
循环显式写出命令式代码步骤: