跳过在fread R中产生错误的行/行

时间:2015-09-07 13:47:31

标签: r fread

我尝试将一个大文件读入r。在尝试阅读时,会发生此错误。即使我跳过前800607行也不会消失。我还尝试使用命令删除终端中的行。

    <?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
    <value>
        <struct>
            <member>
                <name>faultCode</name>
                <value><int>2</int></value>
            </member>
            <member>
                <name>faultString</name>
                <value><string>The XML data received was either invalid or not in the correct form for XML-RPC. Turn on debugging to examine the XML data further.</string></value>
            </member>
        </struct>
    </value>
</fault>
</methodResponse>

它没有解决我的问题。如果你能帮助我,我将非常感激。

我从R得到的原始错误是:

sed '800608d' filename.csv

1 个答案:

答案 0 :(得分:2)

我目前正在解决这类问题。我不确定这是否适用于所有情况 - 更不用说我自己合作的所有文件了。但是现在我似乎已经取得了一些成功:

skip.list <- c()

for (i in 1:length(dir(input.dir))){ # i=3
  file <- dir(input.dir)[i]
  ingested.file <- NULL
  ingested.file <- try(fread(paste0(input.dir,file), header=T, stringsAsFactors=F))
  if (class(ingested.file)=="try-error") {
    error.line <-as.integer(sub(" .*","",sub(".*but line ","",as.character(ingested.file))))
    app.reviews.input <- try(fread(paste0(input.dir,file), header=T, stringsAsFactors=F,skip=error.line))
    if (class(ingested.file)=="try-error") {
      skip.list_by.downloads <- c(skip.list_by.downloads, file)
      next
    }
  }
}

我目前正在处理大约750个文件,每行1000行 - 其中大约50个具有相同的问题。然而,通过这种方法,我可以阅读其中的30个;其余20个似乎在多行中有错误,但我无法指定多个跳过值。

如果可以指定更多跳过,那么您可以尝试使用while语句。即。

while (class(ingested.file)=="try-error") ...然后根据需要自动更新error.list。

我希望这有帮助!