gpt4 book ai didi

R 和 Rscript 给出不同的日期时间结果

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

当我尝试在 RStudio 上执行以下代码时

library(lubridate)
library(data.table)

a <- data.frame(c("2017-12-01 00:01:00","2017-12-02 00:01:00"),c(5,6))
colnames(a) <- c("t", "x")
a <- as.data.table(a)
a[, t := parse_date_time(t, orders = "ymd HMS")]
print(class(a$t))
paste("a:", format(a[1,1], format = "%Y-%m-%d %H:%M:%S"))

我有以下结果:
[1] "a: 2017-12-01 00:01:00"

但是当我尝试在 Rscript 下运行相同的代码时,输​​出是
[1] "a: 1"

有没有人和我一样的问题?任何帮助表示赞赏。

编辑:R 版本 3.3.1,平台 x86_64-w64-mingw32/x64。

Windows Server 2012 版本:

主要次要构建修订

6 2 9200 0

最佳答案

真正的问题在于data.table。在早期版本的data.table中,如果我们使用数字索引,没有with=FALSE ,然后它将返回数字索引本身。因此,有问题的共享输出。关于这方面的详细信息,可以查阅 data.table 的文档。 .

data.table 的最新版本中,但是,此问题已得到解决,因此,data.table很像 data.frame .这就是为什么没有人能够复制问题中共享的输出的原因。

以下是更新后的代码,使用 with=FALSE带有 data.table 的选项。

library(lubridate)
library(data.table)

a <- data.frame(c("2017-12-01 00:01:00","2017-12-02 00:01:00"),c(5,6), stringsAsFactors=FALSE) # stringsAsFactors=TRUE
colnames(a) <- c("t", "x")
a$t1 <- parse_date_time(a$t, orders = "ymd HMS")
a <- as.data.table(a)
a[, t := parse_date_time(as.character(t), orders = "ymd HMS")]
print(class(a$t))
paste("a:", format(a[1,1, with=FALSE], format = "%Y-%m-%d %H:%M:%S"))

您可以使用 sessionInfo() 获取有关软件包版本的信息.使用包版本,可以确定问题。

关于R 和 Rscript 给出不同的日期时间结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47946343/

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