R语言中可配合管道运算符使用的if语句等价函数
实现管道式条件执行的解决方案
你要的这种管道式条件执行可以通过自定义函数或者调整现有函数的用法来实现,以下是几种可行的方法:
1. 自定义function_if函数(完全匹配你的写法)
直接实现你设想的function_if,逻辑和原生if一致:
library(dplyr) function_if <- function(input, cond) { if (cond) input } # 测试 cond <- TRUE print('Hello') %>% function_if(cond) # [1] "Hello" cond <- FALSE print('Hello') %>% function_if(cond) # 无输出
2. 用基础R管道结合匿名函数
不需要额外写函数,用管道的匿名函数语法就能搞定:
cond <- TRUE print('Hello') %>% { if (cond) . } # [1] "Hello"
这里的.指代管道传过来的print('Hello')执行结果,条件为真时返回它,假时无输出。
3. 正确使用purrr::when(针对你的场景调整)
其实purrr::when是可以实现的,可能之前的用法不对,试试这种写法:
library(purrr) cond <- TRUE cond %>% when(TRUE ~ print('Hello')) # [1] "Hello"
内容的提问来源于stack exchange,提问作者Julien
相关产品推荐
相关产品推荐

