我遇到了这样一个文件:
COL1 COL2 COL3
weqw asrg qerhqetjw
weweg ethweth rqerhwrtjw
rhqerhqerhq qergqer qerhqew5h
qerh qergqer wetjwryerj
我无法使用fread
直接加载它,因此我将\s+
替换为,
sed
而不是我给予fread并解决了它。但有没有一种用data.table
读取此类数据的内置方式?
答案 0 :(得分:3)
fread
(还)没有阅读fixed-width files的任何功能。
我也常常遇到像这样烦人存储的文件。您可以在Github page上添加功能请求。
在您的情况下可能不是这样,但是您使用sed
的解决方案不适用于我遇到的很多FWF,因为列之间没有空格,例如你会看到像00010这样的字符串实际上包含3个字段。
如果是这种情况,您需要一个字段宽度字典,此时您有几个选项:
R
中read.fwf
fwf
- > csv
程序(我使用我在Python
中编写的程序并且速度非常快,如果你这样做可以共享代码喜欢) - 基本上是你最初方法的强化版本,这样你就再也不用再与FWF打交道了我个人经常坚持第二种选择。 read.fwf
未像fread
那样进行优化,因此可能会很慢。如果你有很多(比如20多个)的FWF阅读,第三个选项是相当繁琐的。
但我同意在fread
中内置这样的内容会很好。
答案 1 :(得分:1)
最近在当前开发中修复了(v1.9.5)。请升级并测试(并报告是否有任何问题)。
fread()
strip.white
在其他参数中获得TRUE
参数(默认= README
)。请在项目页面上查看{{1}}以获取最新的新闻。