我正尝试实现一个具有可选步骤的流程,该步骤由几个函数的流程管道组成。根据条件运行此流程管道,否则它只是通过原始值。但我尝试使用if和purrr::when两种情况来实现这一点,但在两种情况下,正面情况仅返回管道而不执行它。
这里有一个简单的人为例子。我将条件流程简化为一个函数,但能够在TRUE分支中使用magrittr管道很重要。
这里有一个简单的人为例子。我将条件流程简化为一个函数,但能够在TRUE分支中使用magrittr管道很重要。
library(magrittr)
maybe_round = function(x, round = TRUE){
x %>%
`if`(
round,
. %>% round(),
.
)
}
> maybe_round(5.3, TRUE)
Functional sequence with the following components:
1. round(.)
Use 'functions' to extract the individual functions.
> maybe_round(5.3, FALSE)
[1] 5.3
第二个案例正常工作,它返回未更改的原始值。但是第一个案例不是,它返回了 magrittr 管道,但实际上没有使用 5
。我该如何使其按照我的意图工作?我认为这与 magrittr 如何重写语法树有关,但我无法完全理解。
magrittr
的这个特殊问题最巧妙的方法。 - Migwell