【发布时间】:2021-06-15 17:22:01
【问题描述】:
我不确定我是否理解 fread 关于空字符串的行为。比如
rawdata <- 'a,b\n"",""\nabc,2020-12-31 00:00:00'
fread(rawdata,na.strings=c("","NA"))
## a b
## 1:
## 2: abc 2020-12-31 00:00:00
我期待的是 NA,在第一行。我的假设有缺陷吗?
在同一行中,是否可以同时完全控制colClasses 和na.strings?
假设我想将 a 列和 b 列作为字符读取。
rawdata <- 'a,b\n"",""\n1,2020-12-31 00:00:00'
fread(rawdata,na.strings=c("","NA"),
colClasses=c(a="character",
b="character"))
我正在使用 data.table_1.13.6
更新
部分答案已经回答here
fread 似乎使用了与 read.csv 不同的解析器,这可能会导致意外行为。
一种解决方案是用 NA 替换所有空字符串。
见here。但我不确定这个过程是否比read_csv更快
【问题讨论】:
-
rawdata <- 'a,b\n,\n1,2020-12-31 00:00:00'然后为空将变为NA -
感谢您的建议。我无法直接控制
rawdata,只有在fread之后才能控制 -
@Henrik 非常感谢您指出这一点。你提到的那篇文章已经逃过了我的视线。
标签: r data.table na fread