将对象从{XML}
包转换回“普通”R字符向量的最佳方法是什么?
例如:
require(XML)
doc <- htmlParse("http://cran.r-project.org/web/packages/XML/index.html")
class(doc)
# [1] "HTMLInternalDocument" "HTMLInternalDocument"
# "XMLInternalDocument" "XMLAbstractDocument"
与this建议类似,我可以这样做:
doc.char <- capture.output(doc)
但这似乎是一条迂回的路线。但是,我没有找到任何其他适当的方法。这已经困扰了我几次。
答案 0 :(得分:8)
如果您只想要一个角色向量,请使用readLines()
代替htmlParse()
。但是,您可能有更具体的需求,然后答案是使用XPath来查询doc
;请参阅?getNodeSet
(以及语法doc["//path"]
)以及该帮助页面上的示例。
针对您提出的具体问题
library(XML)
doc <- htmlParse("http://cran.r-project.org/web/packages/XML/index.html")
showMethods(class=class(doc), where=search())
到达
as(doc, "character")
答案 1 :(得分:1)
我认为您可以使用do.call(paste, as.list(capture.output(doc)))
(我也遇到了一些问题,我认为你可以和sapply
一起做,因为@flodel在节点NodeSet as character上建议我这样做了)