我尝试将一个大文件读入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
答案 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。
我希望这有帮助!