2017-05-16 8 views
2

私はcase文で置き換えたい一連のネストされたif..elseステートメントを持っています。今、Rは、次のような簡単なスイッチ演算子を持っています高度な条件のRスイッチ/ケース

switch (i) { 

    case 1: 
     // action 1 
     break; 
    case 2: 
     // action 2 
     break; 
    case 3: 
     // action 3 
     break; 
    default: 
     // action 4 
     break; 
} 

しかし、私の場合は、より複雑な条件文ではなく、シンプルなリテラル値です。

私はこのような何かがRで可能であるならば、誰もが知ってい

switch { 

    case i %in% someList: 
     // action 1 
     break; 
    case i %in% someOtherList: 
     // action 2 
     break; 
    case i > 42: 
     // action 3 
     break; 
    default: 
     // action 4 
     break; 
} 

ようなものが必要?私が作業しているコードを読むのがずっと簡単になるでしょう。

は、私の知る限り見ることができるように、この質問ははここで回答されていません。How to use the switch statement in R functions?

おかげで

+0

これは重複していますか? OPは 'switch'パラメータにマップできない特定の' switch'ケースを要求します –

+0

これは簡単な 'if' ..' else if' ...ステートメントのユースケースですか? –

+0

@docendodiscimusはもちろん十分に機能し、私が現時点で適用しているものです。しかし、特定の深さでは、ネストは読みにくくなります(維持することは言うまでもありません)。ケース・ステートメントははるかに洗練されたソリューションになります – Karl

答えて

1

多分それは最善の解決策ではないのですが、あなたは、ネストされたifelse機能を試すことができます。

ifelse(i %in% someList, action1, 
     ifelse(i %in% someOtherList, action2, 
       ifelse(i > 42, action 3, default_action4))) 
+0

これは、私が今やっていることの多少です。かなりすごく素早く手に入る! – Karl

+0

@Karlあなたは正しいですが、各ifelseをインデントすることを省略することができるので、それは 'switch'ステートメントのように見えます –