switch语句给出意外的','错误

Use*_*716 3 r switch-statement

我正在尝试创建一个简单的开关来确定基于季度的开始日期.

我的代码如下:

qtr_start <- function(qtr, yr){
  switch(qtr,
         1 = paste(yr, "0101", sep = ""),
         2 = paste(yr, "0104", sep = ""),
         3 = paste(yr, "0107", sep = ""),
         4 = paste(yr, "0110", sep = ""))
}
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

Error: unexpected '=' in:
"switch(qtr,
         1 ="
>          2 = paste(yr, "0104", sep = ""),
Error: unexpected ',' in "         2 = paste(yr, "0104", sep = ""),"
>          3 = paste(yr, "0107", sep = ""),
Error: unexpected ',' in "         3 = paste(yr, "0107", sep = ""),"
>          4 = paste(yr, "0110", sep = ""))
Error: unexpected ')' in "         4 = paste(yr, "0110", sep = ""))"
Run Code Online (Sandbox Code Playgroud)

我真的很难看到这与帮助版本有何不同:

centre <- function(x, type) {
  switch(type,
         mean = mean(x),
         median = median(x),
         trimmed = mean(x, trim = .1))
}
Run Code Online (Sandbox Code Playgroud)

所有帮助赞赏!

Chr*_*olk 7

您不能使用数字作为案例的名称.只需将它们留下(R将使用第一种情况1,第二种情况2等等,或使用字符串[编辑]并使用as.character数字.

所以要么

 qtr_start <- function(qtr, yr){
     switch(qtr,
        paste(yr, "0101", sep = ""),
        paste(yr, "0104", sep = ""),
        paste(yr, "0107", sep = ""),
        paste(yr, "0110", sep = "")) }
Run Code Online (Sandbox Code Playgroud)

要么

qtr_start <- function(qtr, yr){
  switch(as.character(qtr),
         "1" = paste(yr, "0101", sep = ""),
         "2" = paste(yr, "0104", sep = ""),
         "3" = paste(yr, "0107", sep = ""),
         "4" = paste(yr, "0110", sep = ""))
}
Run Code Online (Sandbox Code Playgroud)