切换声明给出意想不到的','错误

时间:2017-08-30 16:38:32

标签: r switch-statement

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

我的代码如下:

.slice(index+2)

这给出了错误:

var x = 'dsadadsdsa{} = {"val":1,"val2":2}';
x = x.slice(x.indexOf("= {")+2);
x = JSON.parse(x)
console.log(x) //{val: 1, val2: 2}

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

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 = ""))
}

所有帮助表示赞赏!

2 个答案:

答案 0 :(得分:6)

您不能使用数字作为案例的名称。只需将它们留下(R将使用1的第一个案例,2使用第二个案例,依此类推,或者使用字符串[edit]并对数字使用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 = "")) }

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 = ""))
}

答案 1 :(得分:2)

我们需要对数字进行反引用以使语句运行,但实际上这些将被忽略(因此它们只是指示性的)。

switch语句将评估语句的放置顺序,即在下面的示例中,将qtr = 2传递给函数将始终返回paste0(yr, "0104"),无论数字如何在反引号中。

qtr_start <- function(qtr, yr){
 switch(qtr,
     `1` = paste0(yr, "0101"),
     `2` = paste0(yr, "0104"),
     `3` = paste0(yr, "0107"),
     `4` = paste0(yr, "0110"))
 }

qtr_start(1, 2014)
#[1] "20140101"