我使用strtoi
在以下函数中确定一年中的星期几:
to.week <- function(x) strtoi(format(x, "%W"))
它适用于大多数日期:
> to.week(as.Date("2015-01-11"))
[1] 1
但是,当我尝试在
2015-02-23
和2015-03-08
之间的日期时,结果是NA
:> to.week(as.Date("2015-02-25"))
[1] NA
您能给我解释一下导致问题的原因吗?
最佳答案
这是一个可行的实现:
to.week <- function(x) as.integer(format(x, "%W"))
strtoi
失败的原因是默认情况下,它会尝试在"0"
开头时将数字解释为八进制。由于"%W"
返回"08"
,并且八进制不存在8,因此得到了NA。从?strtoi
:另外,您可以使用:
week(as.Date("2015-02-25"))
虽然您可能必须将其结果偏移1以符合您的期望。关于R-strtoi的异常行为获得一年中的一周,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30081101/