r语言 - 如何解决网页抓取功能中的"EOF within quoted string"?



所以我正在使用这个网络抓取函数boldseqspec它根据"分类"参数中给出的分类组向量返回几个物种标本的数据,如下所示:

df<-bold_seqspec(taxon=c("group1","group2","group3"), format = "tsv")

但是最近在某些情况下,我收到以下消息,随后在使用它时丢失了信息:

Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
EOF within quoted string

我以前在 read.delim 中得到过这个,但我用这个解决了它:

df<-read.delim("file.txt",quote = "",comment.char = "")

可重现的示例:

install.packages("bold")
library(bold)
df<-bold_seqspec(taxon=c("Cnidaria","Hippocampus"), format = "tsv", marker="COI-5P")

问题是我用于数据挖掘(boldseqspec(的函数没有引用和comment.char参数。

似乎 tsv 输出同时包含双引号和单引号,这就是解析混乱的原因(有关此事的更多信息 - 实际上它也与生物数据集有关 - 请参阅 EOF-in-quoted-string/read.delim(( 和 read.table((之间的区别(

因此,如果您无法设置引号,我建议您使用解决方法,通过设置format = "xml"并将xml转换为数据帧,并在进一步的步骤中使用库XML(或xml2?(和dplyr

library(XML)
library(dplyr) 
xml = bold_seqspec(taxon=c("Cnidaria","Hippocampus"), format = "xml", marker="COI-5P")
df= xmlToDataFrame(xml , stringsAsFactors = FALSE,) %>% 
mutate_all(~type.convert(., as.is = T))

希望这有帮助。

最新更新