【发布时间】:2017-09-12 00:40:49
【问题描述】:
我正在阅读 Hadley 的 Advanced R。我在第 10 章——“函数式编程”。第 192 页。这也可在:http://adv-r.had.co.nz/Functional-programming.html 的标题“在全局环境下移动函数列表”下获得。
代码如下:
simple_tag <- function(tag) {
force(tag)
function(...) {
paste0("<", tag, ">", paste0(...), "</", tag, ">")
}
}
tags <- c("p", "b", "i")
html <- lapply(setNames(tags, tags), simple_tag)
我的问题是我不明白他为什么说“我将这些函数放在一个列表中,因为我不希望它们一直可用。现有 R 之间发生冲突的风险函数和 HTML 标记高...最后,您可以使用 list2env() 将函数复制到全局环境。您可以在完成后通过删除函数来撤消此操作。"
这是因为如果我运行以下代码:
exists("html",envir = globalenv())
以上代码返回TRUE,表示html已经存在于全局环境中。所以,我不太确定他为什么说“......你可以将函数复制到全局环境......”我承认他不会错。所以,我想把这个问题发给专家。
此外,如果我运行:
where("html")
我明白了:
<environment: R_GlobalEnv>
attr(,"path")
从上面的代码中,听起来html 列表已经在全球环境中了。不是吗?
如果有任何帮助,我将不胜感激。提前致谢。
【问题讨论】:
标签: r function environment