我想做的程序得到一个整数作为输入,输出是该整数对应的星期几(例如:输入:x <- 3L, 输出:星期二)。我被要求使用switch()函数,但我总是得到 "Error: unexpected ',' in " 。下面是我做的程序。谢谢你
x <- 5L
week_num2 <- switch(x,
1L = "Sunday",
2L = "Monday",
3L = "Tuesday",
4L = "Wednesday",
5L = "Thursday",
6L = "Friday",
7L = "Saturday",
stop("Invalid input")
)
week_num2
R中的 switch()
语句被解析为一个函数调用。 由于你不能有像 1L
这样的参数名,这就要求语句的写法不同。 你使用从1到7的所有值,所以你可以不写参数名:
week_num2 <- switch(x,
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
)
(把数字作为注释包括进去可能是个好主意,这样更容易阅读)。 这个表格不支持默认值;如果你不给它一个范围内的数字,它将返回 NULL
。
另一种使用方法(我推荐)是使用一个字符估值的表达式,例如
week_num2 <- switch(as.character(x),
"1" = "Sunday",
"2" = "Monday",
"3" = "Tuesday",
"4" = "Wednesday",
"5" = "Thursday",
"6" = "Friday",
"7" = "Saturday",
stop("Invalid input")
)
在这种形式下,一个未命名的参数被作为默认值使用。