R使用switch语句
王诗翔 · 2018-05-07
与常用处理TRUE
和FALSE
条件的if
相比,switch
语句主要用于处理数字或者字符串,并根据输入返回某个分支。
假设输入一个整数n
,switch
返回从第1个参数开始的第n个参数值:
switch(1, "x", "y")
#> [1] "x"
switch(2, "x", "y")
#> [1] "y"
如果输入的整数超出了范围,无法匹配相应参数值,不可见的NULL
会被返回:
switch(3, "x", "y")
当输入字符串时,switch
语句会有不同的处理方式。它将参数名称和输入进行匹配,并返回最先匹配参数的值。
switch("a", a=1, b=2)
#> [1] 1
switch("b", a=1, b=2)
#> [1] 2
为考虑所有的情况,我们可以增加一个没有参数名的参数来捕获其他输入情况:
switch("c", a=1, b=2, 3)
#> [1] 3
下面是简单使用的一个例子:
switch_test <- function(x){
switch(x,
a = c(1, 2, 3),
b = list(x = 0, y = 1),
c = {
cat("You choose c!\n")
list(name = "c", value = "something")
})
}
switch_test("a")
#> [1] 1 2 3
switch_test("b")
#> $x
#> [1] 0
#>
#> $y
#> [1] 1
switch_test("c")
#> You choose c!
#> $name
#> [1] "c"
#>
#> $value
#> [1] "something"