R中的组switch语句

ric*_*rdo 3 r switch-statement

我有一个i映射到一组类别的变量.

我希望sector根据值的值将变量设置为匹配类别i.

我可以通过一系列if声明来做到这一点,如下所示:

    if(i %in% c(7, 14, 21)) {sector = 'mining'} 
    if(i %in% c(28, 35, 42)) {sector = 'manu'} 
    if(i %in% c(49, 56, 63)) {sector = 'othr'} 
    if(i %in% c(70, 77, 84)) {sector = 'all'} 
Run Code Online (Sandbox Code Playgroud)

这似乎应该是一种可用的分组交换机类型结构.R中有这样的东西吗?

非常感谢

G. *_*eck 7

试试这个:

L <- list(mining = c(7, 14, 12), 
      manu = c(28, 35, 42), 
      other = c(49, 56, 63), 
      all = c(70, 77, 84))
names(Filter(function(x) i %in% x, L))
Run Code Online (Sandbox Code Playgroud)

更新:关于Ben的评论,这是一个短路版本.(如果此评论的动机是速度,那么请注意?Position:"当前实施未针对性能进行优化.")

names(L)[ Position(function(x) i %in% x, L) ]
Run Code Online (Sandbox Code Playgroud)