gpt4 book ai didi

r - 为什么在R中将强制转换为整数倍,是否有解决方法

转载 作者:行者123 更新时间:2023-12-04 11:54:16 25 4
gpt4 key购买 nike

可以从数字类型甚至小数值在 R 中构建日期。这不是很常见,但例如在平均日期时会发生这种情况。不幸的是,他们似乎打破了split

> as.Date(-1, origin = "1970-01-01")
[1] "1969-12-31"
> as.Date(-1.0001, origin = "1970-01-01")
[1] "1969-12-30"
> split(as.Date(-1, origin = "1970-01-01"), 1)[[1]]
[1] "1969-12-31"
> split(as.Date(-1.0001, origin = "1970-01-01"), 1)[[1]]
[1] "1969-12-31" #this is wrong
> unclass(split(as.Date(-1, origin = "1970-01-01"), 1)[[1]])
[1] -1
> unclass(split(as.Date(-1.0001, origin = "1970-01-01"), 1)[[1]])
[1] -1 #this is "why"

因此, split 使两个不同的日期相等。 .人们同意这是一个错误还是我错过了深层原因?任何解决方法?谢谢

最佳答案

无论出于何种原因,split.Date强制 Date输入整数:

> split.Date
function (x, f, drop = FALSE, ...)
{
y <- split.default(as.integer(x), f, drop = drop)
for (i in seq_along(y)) class(y[[i]]) <- "Date"
y
}
<bytecode: 0x2effb98>
<environment: namespace:base>

这至少是函数和文档之间的不合适之处,因为 ?Date说,“日期应该是一个整数,但这不是在内部表示中强制执行的。”。有些人可能认为这是一个错误。我不知道。

你可以通过调用 split.default 来避免这种情况。直接地。
> split.default(as.Date(-1.0001, origin = "1970-01-01"), 1)[[1]]
[1] "1969-12-30"

关于r - 为什么在R中将强制转换为整数倍,是否有解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27871112/

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