我使用strtoi在以下函数中确定一年中的星期几:

to.week <- function(x) strtoi(format(x, "%W"))

它适用于大多数日期:
> to.week(as.Date("2015-01-11"))
[1] 1

但是,当我尝试在2015-02-232015-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/

10-10 08:44