相关疑难解决方法(0)

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

当使用管道操作符%>%与包,如dplyr,ggvis,dycharts,等,我该怎么办了一步条件?例如;

step_1 %>%
step_2 %>%

if(condition)
step_3
Run Code Online (Sandbox Code Playgroud)

这些方法似乎不起作用:

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

step_1 %>%
step_2 %>%
if(condition) step_3
Run Code Online (Sandbox Code Playgroud)

有很长的路要走:

if(condition)
{
step_1 %>%
step_2 
}else{
step_1 %>%
step_2 %>%
step_3
}
Run Code Online (Sandbox Code Playgroud)

没有所有冗余,有没有更好的方法?

r dplyr ggvis magrittr

76
推荐指数
5
解决办法
2万
查看次数

根据外部价值有条件地应用管道步骤

鉴于dplyr工作流程:

require(dplyr)                                      
mtcars %>% 
    tibble::rownames_to_column(var = "model") %>% 
    filter(grepl(x = model, pattern = "Merc")) %>% 
    group_by(am) %>% 
    summarise(meanMPG = mean(mpg))
Run Code Online (Sandbox Code Playgroud)

我有兴趣filter根据价值有条件地申请applyFilter.

对于applyFilter <- 1使用"Merc"字符串过滤行,而不使用过滤器返回所有行.

applyFilter <- 1


mtcars %>%
  tibble::rownames_to_column(var = "model") %>%
  filter(model %in%
           if (applyFilter) {
             rownames(mtcars)[grepl(x = rownames(mtcars), pattern = "Merc")]
           } else
           {
             rownames(mtcars)
           }) %>%
  group_by(am) %>%
  summarise(meanMPG = mean(mpg))
Run Code Online (Sandbox Code Playgroud)

问题

建议的解决方案效率低,因为ifelse始终会评估调用; 更可取的方法只会评估filter步骤applyFilter <- 1.

尝试

低效的 …

workflow conditional pipeline r dplyr

6
推荐指数
1
解决办法
645
查看次数

标签 统计

dplyr ×2

r ×2

conditional ×1

ggvis ×1

magrittr ×1

pipeline ×1

workflow ×1