2017-05-16 30 views
2

我有一系列嵌套的if..else語句,我想用case語句替換。現在,R有一個簡單的開關操作,如下列:R開關/具有高級條件的外殼

switch (i) { 

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

然而,我的情況比較複雜條件句,而不是簡單的文字值。

我需要這樣的東西

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; 
} 

有誰知道,如果這樣的事情在R是可能的嗎?它會使我工作的代碼更加簡單易讀。

據我所看到的,這個問題是回答這裏:How to use the switch statement in R functions?

感謝

+0

這是一個複製? OP要求特定的'switch' case不能映射到'switch'參數 –

+0

這不是簡單的'if'用例''else if' ... statements? –

+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語句 –