2016-05-12 83 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」向量中。 –