fread 列仅包含 NA 值,因为 POSIXct 返回警告和字符列

问题描述 投票:0回答:1

我想使用

NA
将一列
POSIXct
值读取为
fread

我希望这能起作用:

library(data.table)
fwrite(data.table(datetime = as.POSIXct(NA)), "test.csv")
fread("test.csv", colClasses = "POSIXct")

但是,这会给出以下警告:

Warning message:
Column 'datetime' was requested to be 'POSIXct' but fread encountered the following error:
    character string is not in a standard unambiguous format
so the column has been left as type 'character' 

相比之下,使用

utils::write.csv
utils::read.csv
这有效:

write.csv(data.frame(datetime = as.POSIXct(NA)), "test.csv", row.names = FALSE)
read.csv("test.csv", colClasses = "POSIXct")

有可行的解决方法吗?

我用过

data.table_1.15.4

r datetime data.table fread posixct
1个回答
0
投票

解决方法是让 fread 始终将其读取为双精度/数字,然后转换为 posixct。

library(data.table)
fwrite(data.table(datetime = as.POSIXct(NA)), "test.csv")
dt_in <- fread("test.csv", colClasses = "double")[, datetime := as.POSIXct(datetime, origin="1970-01-01")]
dt_in
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.