R 和 Rscript 给出日期时间的不同结果
R and Rscript give different results for datetime
当我尝试在 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 服务器 2012 版本:
主要次要版本修订
6 2 9200 0
真正的问题在于 data.table。在 data.table 的早期版本中,如果我们使用数字索引,而不使用 with=FALSE
,那么它将 return 数字索引本身。因此输出,共享问题。有关详细信息,可以查看 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()
获取有关软件包版本的信息。使用软件包版本,可以确定问题。
当我尝试在 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 服务器 2012 版本:
主要次要版本修订
6 2 9200 0
真正的问题在于 data.table。在 data.table 的早期版本中,如果我们使用数字索引,而不使用 with=FALSE
,那么它将 return 数字索引本身。因此输出,共享问题。有关详细信息,可以查看 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()
获取有关软件包版本的信息。使用软件包版本,可以确定问题。