【问题标题】:How can I achieve partial application of a function before using it within a magrittR pipeline?在 magrittR 管道中使用函数之前,如何实现函数的部分应用?
【发布时间】:2016-03-08 08:37:28
【问题描述】:

我想要管道的可参数化部分。

这是我要写的代码:

library(magrittr)
d <- data.frame(x=1:5)
add_n <- function(n) . %>% transform(x = x + n)
d %>% add_n(3)

显然它不起作用,因为%&gt;%d 设置为add_n 的参数。

【问题讨论】:

  • 对不起,我编辑了问题并进入库以使最小的示例工作。将更改为magrittr - 在第一个地方没有看到标签。
  • 新趋势正在被否决,因为有人编辑了我的问题?
  • @DavidArenburg 我想保持简单,这就是我选择add_n 的原因。我的实际用例s比较复杂,没有内置函数。
  • @DavidArenburg,tidyr 还导出%&gt;%(顺便说一句,还有 stringr)
  • @docendodiscimus 是的newer features it seems,有趣的是它被归类为“BUGS”(或者它可能被归类为“矿工改进”?)

标签: r dplyr magrittr


【解决方案1】:

您可以执行以下操作:

add_n <- function(d, n) d %>% transform(x = x + n)
d %>% add_n(3)
#   x
# 1 4
# 2 5
# 3 6
# 4 7
# 5 8

%&gt;% 将以下函数的第一个参数替换为 LHS,因此您的函数需要第二个参数。

【讨论】:

  • 嗯,现在我很尴尬。我不知道为什么我自己没有找到这个解决方案。
猜你喜欢
  • 2016-05-22
  • 2019-12-27
  • 2017-10-02
  • 2018-07-23
  • 2023-01-13
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 2014-11-15
相关资源
最近更新 更多