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)
所有帮助赞赏!
您不能使用数字作为案例的名称.只需将它们留下(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)