R 使用管道运算符时的条件评估 %>%

标签 r dplyr ggvis magrittr

将管道运算符 %>%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中,如果YTRUE则加1,否则只返回X的最后一个值. 是一个替代函数,它告诉函数链上一步的输出去了哪里,因此我可以在两个分支上使用它。

编辑 正如 @BenBolker 指出的,您可能不需要 ifelse,所以这里有一个 if 版本。

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

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

关于R 使用管道运算符时的条件评估 %>%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604107/

相关文章:

r - ggvis:交互图

R:ggvis-灰色背景(如ggplot2)

用R中的列平均值替换矩阵中的无限值

将 NA 替换为具有相应列名的另一列中的值

r - 将季度数据分解为 R 保持值中的每日数据?

r - R中的n=n()是什么意思?

r - 利用可用数据并忽略缺失数据来构建分类器

r - MTTF 的置信区间 - R 中的威 bool 生存曲线

r - 分组数据帧 (dplyr) R 中每个元素的值总和大于或等于

r - 使用日期作为 x 轴的 ggvis 条形图