【问题标题】:using readr to import big data file with different row lengths and whitespace as delimiter使用 readr 导入具有不同行长和空格作为分隔符的大数据文件
【发布时间】: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 条相同的行并且它可以工作,如果我在开头有一个较短的行,它就不会

标签: r readr


【解决方案1】:

我使用以下代码成功地将我的数据(从名为 file 的文件)收集到数据帧 (rtcm1) 中:

 #create a vector for named the columns, actually I used more for define the number of columns to be used to import my file

 col<-paste("V",1:17,sep="")

#use read_delim of the readr packages with a separator is whitespace. I don't really know why but I need to put quote="" to collect all my datas. maybe to not consider "" as quoting characters.

 rtcm1<-read_delim(file,delim=" ",col_names=col,quote="")

使用这种解决方案 NA 的填充单元格没有数据和警告由函数给出,但它似乎运作良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2020-05-26
    • 1970-01-01
    相关资源
    最近更新 更多