【发布时间】:2014-03-11 17:01:49
【问题描述】:
我正在阅读由另一个程序创建的一些文件。该程序使用数字-99.9 填充缺失值的条目。
我正在加速一些代码,从使用data.table 包中的read.table() 到fread() 来读取这些数据文件。我可以在read.table 中使用na.strings=c(-99.9),但fread 似乎不接受na.strings 的数字参数。对应的字符串 na.strings=c("-99.9") 不起作用,并给我错误:'na.strings' is type '。
我可以让fread 将数字-99.9 读为NA吗?
【问题讨论】:
-
如果您对 sed/awk 感到满意,您可以在命令行上执行此操作并将 -99.9 替换为 NA,然后使用 fread 读取文件
-
我检查了 fread 是否可以接受 colClasses 争论,从文档中发现它“自动检测所有控件,如 sep、colClasses 和 nrows。bit64::integer64 类型也被检测并直接读取,无需在转换之前需要读取为字符。”所以你最好的选择是做一个 sed 替代,然后在 R 中加载文件。这也可能有助于biostat.jhsph.edu/~rpeng/docs/R-large-tables.html
-
@infominer 我知道
colClasses参数,但我担心我可能没有关于脚本中数据文件中的列类的先验知识。有不同类型的文件,而且对所有这些都进行硬编码列类太多。将考虑使用 sed/awk,或在读入文件后进行后处理并替换 -99.9。 -
列表中可以让
na.strings按预期工作:#2660。我已经在此处添加了一个链接。希望很快。
标签: r data.table read.table