我正在尝试创建一个简单的开关来确定基于季度的开始日期。
我的代码如下:
.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 = ""))
}
所有帮助表示赞赏!
答案 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"