R开关/箱具有先进的条件

时间:2017-05-16 08:39:59

标签: r switch-statement

我有一系列嵌套的if..else语句,我想用case语句替换它。现在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?

由于

1 个答案:

答案 0 :(得分:1)

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

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