我下载了一个XML数据库(Cellosaurus - https://web.expasy.org/cellosaurus/),我试图使用R中的XML
包来查找细胞系名称的所有拼写错误,并返回拼写错误和加入。
我从来没有使用过XML或XPath表达式,我有真正的困难,所以我也希望我在我的问题中使用了正确的术语…
我已经像这样加载了数据库:
doc <- XML::xmlInternalTreeParse(file)
,我可以看到一个像这样的示例条目:
<cell-line category="Cancer cell line">
<accession-list>
<accession type="primary">CVCL_6774</accession>
</accession-list>
<name-list>
<name type="identifier">DOV13</name>
</name-list>
<comment-list>
<comment category="Misspelling"> DOR 13; In ArrayExpress E-MTAB-2706, PubMed=25485619 and PubMed=25877200 </comment>
</comment-list>
我认为我已经设法找出了所有的拼写错误(这已经有点有用了):
mispelt <- XML::getNodeSet(doc, "//comment[@category="Misspelling"]")
但现在我不知道如何获得加入与每个拼写错误相关联。也许我应该使用不同的函数?
谁能帮助我或指出我对一个简单的XML R包教程请?
对于一个不完整的示例很难提供帮助。但其基本思想是在树状结构中导航以获得所需的数据。我已经使用了当前的xml2
包,但同样的想法应该适用于XML
。例如
library(xml2)
xx <- read_xml("cell.xml")
nodes <- xml_find_all(xx, "//comment[@category="Misspelling"]")
xml_find_first(nodes, ".//../../accession-list/accession") |> xml_text()
# [1] "CVCL_6774"
不清楚你是否有多个注释或者你的数据是如何结构化的。如果有多个节点,则可能需要lapply
或purrr::map
作为第一个节点选择器之后的第二个节点选择器