Как решить "EOF внутри строки в кавычках" в функции веб-очистки? - PullRequest
0 голосов
/ 05 февраля 2020

Так что я использую эту функцию веб-очистки boldseqspec, которая возвращает данные об образцах нескольких видов на основе вектора таксономических c групп, приведенных в аргументе "таксона", например:

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), не имеет аргументов quote и comment.char.

1 Ответ

2 голосов
/ 14 февраля 2020

Кажется, что вывод tsv содержит как двойные кавычки, так и одинарные кавычки, и именно поэтому синтаксический анализ сбивает с толку (для получения дополнительной информации по этому вопросу - на самом деле это также касается набора биологических данных - см. EOF -within-quoted-string / разница между read.delim () и read.table () )

Следовательно, если вы не можете установить цитаты, я бы предложил использовать обходной путь, установив format = "xml" и преобразование xml в DataFrame на следующем шаге с библиотеками 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))

Надеюсь, это поможет.

...