2016-05-12 21 views
0

case1が真であれば特定のverctorのすべての値を保持するフィルタ条件付きの光沢のあるアプリがあります。入力しない場合は光沢のあるフィルターを使用します。 私はすでに基本的なRでそれをやっていますが、動作しますが、今はdplyrを使ってアプリケーションを最適化する必要があります。 はあなた光沢のあるdplyrフィルター

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

ありがとうEDIT 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, ]     
) 

EDIT 2:ジェフが答えた後

、私はちょうど場合によってifelse文をremplaced (条件)他とはうまく動作...任意の提案?

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

答えて

1

Bonjourの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フィルタのelse文でifelse文を書き直しました。 –

1

あなたは再現可能な例を提供しました。私が理解する限り、この簡単な例があなたを助けるかもしれません。

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"ベクトルですべてのモダリティを保持したい。 –

関連する問題