R语言如何使用switch()函数实现整数转星期并解决运行报错
错误原因
你代码的语法错误源于R语言switch()函数的参数命名规则:未加引号的纯数字(如1L)不能作为参数名使用,因此1L = "Sunday"这类写法不符合R语法要求,会触发语法错误。
修复方案
方案1:整数索引写法(无需命名分支)
当switch()的第一个参数为整数时,会直接按位置匹配后续分支,按1到7的顺序排列对应星期值即可:
x <- 3L week_num2 <- switch(x, "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", stop("Invalid input") ) week_num2 # 输出:Tuesday
方案2:显式匹配写法(分支对应关系更清晰)
如果需要明确标注每个数值对应的星期,避免顺序写错,可将输入转为字符串,分支名用加引号的数字:
x <- 3L week_num2 <- switch(as.character(x), "1" = "Sunday", "2" = "Monday", "3" = "Tuesday", "4" = "Wednesday", "5" = "Thursday", "6" = "Friday", "7" = "Saturday", stop("Invalid input") ) week_num2 # 输出:Tuesday
两种方案都符合使用switch()函数的要求,可根据使用习惯选择。
内容的提问来源于stack exchange,提问作者KapitanPilips
相关产品推荐
相关产品推荐

