R 如何解决这个问题;找不到函数“”的继承方法;将xml转换为数据帧时出错?
所以我有这个包和函数来挖掘xml形式的数据帧,我试着将xml转换成单个数据帧,但我不能。我使用了以下代码:R 如何解决这个问题;找不到函数“”的继承方法;将xml转换为数据帧时出错?,r,xml,R,Xml,所以我有这个包和函数来挖掘xml形式的数据帧,我试着将xml转换成单个数据帧,但我不能。我使用了以下代码: library(bold) library(XML) library(dplyr) xml = bold_seqspec(taxon=c("carnivora"), format = "xml", marker="COI-5P") df= xmlToDataFrame(xml , stringsAsFactors = FALSE,) %>% mutate_all(~type.c
library(bold)
library(XML)
library(dplyr)
xml = bold_seqspec(taxon=c("carnivora"), format = "xml", marker="COI-5P")
df= xmlToDataFrame(xml , stringsAsFactors = FALSE,) %>%
mutate_all(~type.convert(., as.is = T))
但是,我在“xmlToDataFrame”函数中遇到以下错误:
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘xmlToDataFrame’ for signature ‘"xml_document", "missing", "missing", "missing", "missing"’
问题在于,xml位于具有可变长度成员的深度嵌套列表结构中,因此不可能自动将其强制为矩形数据结构(即数据帧) 可以通过各种方式提取所需的数据,但您需要决定从每个记录中提取哪些字段,以及如果单个字段中有多个条目,该如何处理,等等 我建议您首先使用
xml2::as_list
将xml转换为列表,然后使用str
查看其内容,以查看需要哪些字段。然后,您可以创建一个数据框,其中包含每个记录所需的字段
例如:
库(粗体)
库(XML)
图书馆(dplyr)
xml 1 T-2294 Carnivo~--CCTGTACTCTTATTCTTCGGTGTGTGGCCGGAATGGGGGAACGCCCTTAGCTGAT~
#>2 HBL008245卡尼沃~
#>3 HBL008385 Carnivo~ACTCTTTACTTTTTTTGGCATGAGCGGAATAGGGCACTGCATTAGCATATAGCTATTTGATT~
#>4 HBL008419 Carnivo~nntttatatttgctttcgggggcatgaggccggtataggcactgctctaagcctctaatt~
#>5 HLC-10619 Carnivo~ACCCTTTACTCTTCGGTGCATGAGCCCGGAATAGGGAACTCCCTCTCTAATC~
#>6 ROM 101864 Carnivo~ACTCTCTACCTCTCTCTCTCTCGGGGCTTGGGCTGGAATAGTGGGCACCCTCTCAGCTACTAATT~
#>7 ROM 93093 Carnivo~ACTTTGTATTATTTTGGAGCATGAGGCCGGCATAGTTACCGCCCTGAGCTTTATC~
#>8 bLpa138 Carnivo~ccctgctatatctcaataccaacccccctattcgtctgatctgttttacactgcttct~
#>9 Fge20 Carnivo~ccctgcatatcaacacctctcttcgtctctctctctcttaattachtgtttt~
#>10 bCth05 Carnivo~TTCGCTGCCCTCATATAGCCTTCCATTGTAATATCCATATCATATTCATCCATCCATCATCATCCATTT~
#> # ... 还有4567行
该代码工作正常,但使用“as___________________________seqspec”函数和“format=“tsv”时,数据框中只有3列,使用函数“bold___seqspec”。在您将其转换为tibble之前,列表结果似乎包含了我想要的所有信息,但我无法将其正确取消列表,谢谢您的帮助answer@tadeufontes是的,这就是我在回答中解释的。例如,我从每个记录中选择了三个字段放在数据框中,因为您不能简单地取消整个列表的列表并将其称为数据框:每个记录有不同数量的条目,因此数据不是矩形格式。
tibble::as_tibble(result)
#> # A tibble: 4,577 x 3
#> specimen order nucleotides
#> <chr> <chr> <chr>
#> 1 T-2294 Carnivo~ ---CCTGTACCTCTTATTCGGTGCGTGAGCCGGAATGGCGGGAACCGCCCTTAGCCTACTGAT~
#> 2 HBL008245 Carnivo~ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN~
#> 3 HBL008385 Carnivo~ ACTCTTTACCTTTTATTTGGCGCATGAGCCGGAATAGTAGGCACTGCATTAAGCCTATTGATT~
#> 4 HBL008419 Carnivo~ NNTTTATATTTGCTATTCGGGGCATGAGCCGGTATAGTAGGCACTGCCCTAAGCCTCCTAATT~
#> 5 HLC-10619 Carnivo~ ACCCTTTACCTCTTATTCGGTGCATGAGCCGGAATAGTAGGAACTGCCCTCAGTCTTCTAATC~
#> 6 ROM 101864 Carnivo~ ACTCTCTACCTTCTATTCGGGGCTTGGGCTGGAATAGTGGGCACCGCTCTCAGCCTACTAATT~
#> 7 ROM 93093 Carnivo~ ACTTTGTATTTATTATTTGGAGCATGAGCCGGCATAGTAGGTACCGCCCTGAGCCTTCTTATC~
#> 8 bLpa138 Carnivo~ CCCTGCTATATCTCAATACCAAACACCCCTATTCGTCTGATCTGTTTTAATCACTGCTGTTCT~
#> 9 Fge20 Carnivo~ CCCTGCCATATCTCAATATCAAACACCTCTCTTCGTCTGATCTGTCTTAATTACTGCTGTTTT~
#> 10 bCth05 Carnivo~ TTCGCTGCCCCCTCAATAATAGGCCTTCCTATTGTAATCCTAATCATTATATTCCCATCCATT~
#> # ... with 4,567 more rows