在
XML
包中的示例部分?htmlParse
中,有以下函数getLinks()
。getLinks <- function() {
links <- character()
list(a = function(node, ...) {
links <<- c(links, xmlGetAttr(node, "href"))
node
},
links = function()links)
}
使用它一段时间后,再仔细观察,我仍然无法理解函数体中发生的事件顺序。
> bod <- as.list(body(getLinks))
> c(bod, rapply(bod, as.list))
[[1]]
`{`
[[2]]
links <- character()
[[3]]
list(a = function(node, ...) {
links <<- c(links, xmlGetAttr(node, "href"))
node
}, links = function() links)
$a
function (node, ...)
{
links <<- c(links, xmlGetAttr(node, "href"))
node
}
<environment: 0x595f7f0>
$links
function ()
links
<environment: 0x595f7f0>
能否提供该函数中发生的事件链的详细解释?
如果需要示例,请运行以下代码:
> library(XML)
> URL <- "http://www.retrosheet.org/game.htm"
> h1 <- getLinks()
> htmlTreeParse(URL, handlers = h1)
> h1$links()