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中有这样的东西吗?
非常感谢
试试这个:
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)