在R中使用this tutorial处理XML时,我遇到了以下代码:
xml.url <- "http://www.w3schools.com/xml/plant_catalog.xml"
xmlfile <- xmlTreeParse(xml.url)
xmltop <- xmlRoot(xmlfile)
plantcat <- xmlSApply(xmltop, function(x) xmlSApply(x, xmlValue))
我理解前三行,但对于我的生活,我不明白最后一行。有人可以向我解释一下吗?为什么有函数(x)?
答案 0 :(得分:1)
xmlSApply
这些方法是lapply
和sapply
函数的简单包装。
对于列表中的每个元素,您都应用了一个函数。
xmlSApply(listXml,FUNC)
这里的示例有点复杂,因为它使用另一个xmlSApply
来定义func。
例如,xmltop中的第一个元素是:
x = <PLANT>
<COMMON>Bloodroot</COMMON>
<BOTANICAL>Sanguinaria canadensis</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.44</PRICE>
<AVAILABILITY>031599</AVAILABILITY>
</PLANT>
如果您应用xmlSApply(x,xmlValue):
COMMON BOTANICAL ZONE LIGHT PRICE AVAILABILITY
"Bloodroot" "Sanguinaria canadensis" "4" "Mostly Shady" "$2.44" "031599"
答案 1 :(得分:0)
在xmlSApply()的简化用法中,可以理解为访问文档(提供文档)并使用xmlName,xmlValue等查找文档的详细信息。 xmlSApply(X,FUN,...)
在这里阅读更多内容: http://www.inside-r.org/packages/cran/XML/docs/xmlApply
有关详细用法请参阅我的博客中的这篇文章: http://hodentekhelp.blogspot.com/2016/07/how-do-you-get-at-details-of-xml.html