gpt4 book ai didi

R - strtoi 奇怪的行为来获取一年中的一周

转载 作者:行者123 更新时间:2023-12-02 17:39:46 27 4
gpt4 key购买 nike

我在以下函数中使用 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:

Convert strings to integers according to the given base using the C function strtol, or choose a suitable base following the C rules.

...

For decimal strings as.integer is equally useful.

此外,您还可以使用:

week(as.Date("2015-02-25"))

尽管您可能必须将结果抵消 1 才能符合您的期望。

关于R - strtoi 奇怪的行为来获取一年中的一周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081101/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com