【问题标题】:R workarounds: fread versus read.tableR 解决方法:fread 与 read.table
【发布时间】:2014-10-14 11:30:36
【问题描述】:

我想了解为什么read.tablefread 之间存在这种差异。也许您会知道使fread 工作的解决方法。我有两行代码执行相同的目标——读取文件。 freadread.table 执行得更快、更有效,但read.table 在相同数据集上产生的错误更少。

成功的 READ.TABLE 方法

table <- read.table("A.txt",header=FALSE,sep = "|", fill=TRUE, quote="", stringsAsFactors=FALSE)

FREAD 方法

table <- fread("A.txt",header=FALSE,sep = "|")

FREAD 返回我探索过的经典错误,

读取数据时应为 sep ('|'),但换行或 EOF 在第 57193 行结束字段 44

最初,read.table 在不包含 fill=TRUE 并且不会读取文件时返回了我认为类似的错误。

扫描错误(文件、内容、nmax、sep、dec、quote、skip、nlines、na.strings、:第 7 行没有 45 个元素

我认为这些错误在某些方面可能是相似的。根据文档,填充允许以下内容。如果为 TRUE,则如果行的长度不相等,则会隐式添加空白字段。

是否有类似于fill=TRUE 的解决方法可以解决fread 问题?

【问题讨论】:

  • 看来问题类似于stackoverflow.com/questions/25853575/…程序员询问隐式读取的相同参数。
  • 你读过this
  • @user20650 我想你找到了答案,我可能已经改写了这个问题。伙计们,请不要将问题标记为重复,因为它可能会帮助其他人更轻松地找到其他答案。
  • @user20650 => 回答...获得你的信任。
  • 你自己的答案很好 - 请接受它

标签: r fread read.table


【解决方案1】:

来自 MATT DOWLE 的回答:Fill option for fread

更新:不太可能完成。 fread 针对常规分隔文件进行了优化(其中每行具有相同的列数)。但是,当实现 sep2 时,可以将不规则文件读入列表列(每个单元格本身都是一个向量);不像 read.csv 那样填写单独的列。

【讨论】:

    【解决方案2】:

    这个答案强调了data.table 可以现在fill 使用fread

    https://stackoverflow.com/a/34197074/1569064

    fread(输入, sep="auto", sep2="auto", nrows=-1L, header="auto", na.strings="NA", 字符串AsFactors=FALSE,详细=getOption("datatable.verbose"),自动启动=1L, 跳过=0L,选择=NULL,丢弃=NULL,colClasses=NULL, integer64=getOption("datatable.integer64"), # 默认值:"integer64" dec=if (sep!=".") "."否则“,”,col.names, check.names=FALSE,编码=“未知”,报价=“\””, strip.white=TRUE,fill=FALSE,blank.lines.skip=FALSE,key=NULL, showProgress=getOption("datatable.showProgress"), # 默认值:TRUE data.table=getOption("datatable.fread.datatable") # 默认值:TRUE )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2012-02-20
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多