当将管道操作器%>%dplyrggvisdycharts等包一起使用时,如何有条件地执行步骤?例如

step_1 %>%
step_2 %>%

if(condition)
step_3

这些方法似乎不起作用:

step_1 %>%
step_2 
if(condition) %>% step_3

step_1 %>%
step_2 %>%
if(condition) step_3

还有很长的路要走:

if(condition)
{
step_1 %>%
step_2 
}else{
step_1 %>%
step_2 %>%
step_3
}

有没有更好的方法不需要所有的冗余?

推荐答案

下面是一个利用.ifelse的快速示例:

X<-1
Y<-T

X %>% add(1) %>% { ifelse(Y ,add(.,1), . ) }

ifelse中,if YTRUE,if将加1,否则它将只返回最后一个值X..是一个替身,它告诉函数链上一步的输出到哪里,所以我可以在两个分支上使用它.

Edit

X %>% 
add(1) %>% 
 {if(Y) add(.,1) else .}

感谢@Frank指出,我应该在ififelse语句周围使用{个大括号来继续这个链条.

R相关问答推荐

如何从使用lapply()的r中的拆分数据帧中删除多个部分?

R根据名称的载体对收件箱列采取行动

当y大于阈值和值范围时,在时间序列中突出显示区域

生成具有受控相关性的x和y

使用facet_wrap()时如何将面板标题转换为脚注?

如何判断某列中由某些行组成的百分比

更改网格的crs以匹配简单要素点对象的crs

如何使用shinyChatR包配置聊天机器人

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

如何计算R数据集中每个女性的子元素数量?

在R中替换函数中的特定符号

当月份额减go 当月份额

IMF IFS数据以R表示

如何根据嵌套元素的名称高效而优雅地确定它属于哪个列表?

如何使用tryCatch执行语句并忽略警告?

SHINY:使用JS函数应用的CSS样式显示HTML表格

过滤名称以特定字符串开头的文件

如何从向量构造一系列双边公式

如何使用For-R循环在向量中找到一系列数字

自动STAT_SUMMARY统计与手动标准误差之间的差异