R 将函数复制到全局环境
我正在读哈德利的《高级R》。我在第10章-“函数式编程”,第192页。这也可以在以下位置获得:标题为“在全局环境下移动函数列表” 代码如下:R 将函数复制到全局环境,r,function,environment,R,Function,Environment,我正在读哈德利的《高级R》。我在第10章-“函数式编程”,第192页。这也可以在以下位置获得:标题为“在全局环境下移动函数列表” 代码如下: simple_tag <- function(tag) { force(tag) function(...) { paste0("<", tag, ">", paste0(...), "</", tag, ">") } } tags <- c("p", "b", "i") html <- lap
simple_tag <- function(tag) {
force(tag)
function(...) {
paste0("<", tag, ">", paste0(...), "</", tag, ">")
}
}
tags <- c("p", "b", "i")
html <- lapply(setNames(tags, tags), simple_tag)
上面的代码返回TRUE
,这意味着html
已经存在于全局环境中。所以,我真的不知道他为什么说“……你可以用……将函数复制到全球环境中。”我承认他不会错的。所以,我想把这个问题发布给专家
此外,如果我运行:
where("html")
我得到:
<environment: R_GlobalEnv>
attr(,"path")
属性(,“路径”)
从上面的代码中,听起来好像html
list已经在全局环境中了。不是吗
我非常感谢你的帮助。提前感谢。
html
不是一个函数,但它是一个保存在全局环境中的对象,如where(“html”)
所示。相反,html
是一个包含3个函数的列表
names(html)
# [1] "p" "b" "i"
要访问html
中的一个函数,请使用:html$p()
和一个参数。见:
html$p
# function(...) {
# paste0("<", tag, ">", paste0(...), "</", tag, ">")
# }
# <environment: 0x1093fe698>
但是,如果全局环境中已经存在
p
变量或函数,则在使用list2env
时,该变量或函数将被覆盖。覆盖html标记的风险很高,因为html标记名非常短。因此,您正在使用的包中可能已经有一个p
、b
或i
函数。html
不是函数,但它是保存在全局环境中的对象,如where(“html”)
所示。相反,html
是一个包含3个函数的列表
names(html)
# [1] "p" "b" "i"
要访问html
中的一个函数,请使用:html$p()
和一个参数。见:
html$p
# function(...) {
# paste0("<", tag, ">", paste0(...), "</", tag, ">")
# }
# <environment: 0x1093fe698>
但是,如果全局环境中已经存在p
变量或函数,则在使用list2env
时,该变量或函数将被覆盖。覆盖html标记的风险很高,因为html标记名非常短。因此,您正在使用的软件包中可能已经有一个p
、b
或i
函数