具有高级条件的R开关/外壳

Kar*_*arl 5 r switch-statement

我有一系列嵌套if..else语句,我想用 case 语句替换它们。现在 R 有一个简单的 switch 运算符,如下所示:

switch (i) {

    case 1:
        // action 1
        break;
    case 2:
        // action 2
        break;
    case 3:
        // action 3
        break;
    default:
        // action 4
        break;
}
Run Code Online (Sandbox Code Playgroud)

然而,我的情况是更复杂的条件,而不是简单的文字值。

我需要类似的东西

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;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道R中是否可以实现这样的事情?这将使我正在编写的代码更易于阅读。

据我所知,这个问题没有这里得到解答:How to use the switch statements in R function?

谢谢

Car*_*ans 1

也许这不是最好的解决方案,但您可以尝试使用嵌套ifelse函数:

ifelse(i %in% someList, action1,
       ifelse(i %in% someOtherList, action2,
              ifelse(i > 42, action 3, default_action4)))
Run Code Online (Sandbox Code Playgroud)