我有一个关于月份数字的字符串输入,例如十月是
"10"
,十一月是 "11"
。
我的第一个目标是导出字符串中的下个月数字,例如如果字符串是
"10"
我的输出应该是 "11"
。这有效,
mon_num <- "09"
as.character(match(month.abb[as.numeric(mon_num) + 1], month.abb))
我的第二个要求是字符串应该有两个字符。这意味着,如果输入字符串是
"02"
,则输出应该是 "03"
。然而,上面的代码行会产生 "3"
。有没有办法导出 "03"
而不是 "3"
.
我的第二个问题是,如果输入是
"12"
,则输出是NA
。怎么做"01"
?
这是一个处理这个问题的函数 -
get_next_month <- function(mon_num) {
stopifnot("month number should be between 1 and 12" =
mon_num >= 1 && mon_num <= 12)
if(mon_num == 12) return("01")
nm <- match(month.abb[as.numeric(mon_num) + 1], month.abb)
sprintf("%02s", nm)
}
get_next_month(2)
#[1] "03"
get_next_month(10)
#[1] "11"
get_next_month(12)
#[1] "01"
get_next_month(15)
get_next_month(15) 中的错误:月份数应在 1 到 12 之间