【发布时间】:2016-05-12 14:34:04
【问题描述】:
我在使用 readr 包读取大文件(接近 2000000 行)时遇到问题。
我为什么要使用 readr 包。我的数据文件可以包含停止执行read.table() 的ASCII 控制字符(0x01 等于ascii 26 等于CTRL+Z),我注意到readr 包对这个问题不敏感。
我的文件有不同的行长,因此如果可以使用read.table(),我会使用fill=TRUE。
我尝试使用 readr 包的read_table 但没有成功,因为它似乎找不到空格作为列分隔符。
我尝试使用read_delim。使用代码read_delim(file,delim=" ")。找到了分隔符,但第一行被认为是我的数据帧的主要长度,因此较长的行被截断。
有人给点建议吗?
【问题讨论】:
-
你试过
fread函数data.table包吗? -
您能展示一下您是如何尝试使用
read_file()的吗?这个函数是为read text file where columns are separated by whitespace 精确创建的。想到一个替代方案,你知道每列的width吗?或列初始和最终位置? -
我刚刚尝试了 fread,但它似乎停在了一个空行上,你有什么线索可以阻止这个错误吗?
-
您可以尝试设置
blank.lines.skip = TRUE,有关所有参数的信息,请参阅?fread。 -
我理解 read_table 使用的东西。如果“每行长度相同,并且每个字段在每行中的位置相同,则似乎不起作用。它类似于 read.table,但更像是解析为由任意数量的空格分隔的文件,它首先发现空列,然后像固定宽度的文件一样解析。“确实,我尝试了 10 条相同的行并且它可以工作,如果我在开头有一个较短的行,它就不会