2016-05-12 99 views
0

我有一个闪亮的应用程序与过滤器条件,我想保留所有值的特定范例如case1为真例如,如果不是我做输入闪亮的过滤器。 我已经做了基本的R,它的工作,但现在需要通过使用dplyr优化我的应用程序。 谢谢dplyr过滤器闪亮

filter(
    ifelse(input$case1 == TRUE, 
      perimetre_commercial_estime %in% perimetres, 
      perimetre_commercial_estime %in% input$perimetre 
    ) 
) 

编辑1:

在基础R相对应的是:

ifelse(input$case1 == TRUE, 
     my.data <- my.data[my.data$perimetre_commercial_estime %in% perimetres, ], 
     my.data <- my.data[my.data$perimetre_commercial_estime %in% input$perimetre, ]     
) 

编辑2:

杰夫回答后,我只是如果remplaced的ifelse语句(条件)否则,它很好地工作...任何建议?

filter(if(input$case1 == TRUE){perimetre_commercial_estime %in% perimetres} 
     else {perimetre_commercial_estime %in% input$perimetre} 

回答

1

卓悦MTB,

这听起来好像你在过滤器中把你的条件时,它应该是第一个。所以:

if (condition) 
    var <- filter(perimetre_commercial_estime %in% perimetres) 
else 
    var <- filter(perimetre_commercial_estime %in% input$perimetre) 

你的帖子建议ifesle应该在filter()函数之外; dplyr允许组合/排除逻辑参数,如& &和||但在相同的情况下。

希望我理解这个问题,我在这里追捕一些意想不到的光泽/ dplyr行为自己...

+0

Bonjour Jeff :) 感谢您的回答,我通过dplyr过滤器中的if语句取代了ifelse语句,并且它似乎正常工作......奇怪! –

1

You shud提供了一个可重复的例子。据我了解,这个简单的例子可能会帮助你。

library(dplyr) 
x <- data.frame(a = sample(c("a","b"),10,replace=T),b = rnorm(10)) 
> x 
    a   b 
1 b -0.3862283 
2 a 0.7916584 
3 a -0.8751162 
4 a -0.8164377 
5 b -0.2174477 
6 a -0.1998766 
7 a 0.3356798 
8 a 0.1569653 
9 b 0.8326479 
10 b -0.7936936 

x %>% filter(a == "a") 

    a   b 
1 a 0.7916584 
2 a -0.8751162 
3 a -0.8164377 
4 a -0.1998766 
5 a 0.3356798 
6 a 0.1569653 
+0

谢谢koundy,但它不是我要找的。我想要的是用闪亮的条件过滤这就是为什么我使用ifelse语句。例如,对于变量“perimetre_commercial-estime”,我希望闪亮显示我在输入$ perimetre中选择模态的内容,但是当我检查“case1”时,我想要将所有模态保留在“perimetres”向量中。 –