Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将函数复制到全局环境_R_Function_Environment - Fatal编程技术网

R 将函数复制到全局环境

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

我正在读哈德利的《高级R》。我在第10章-“函数式编程”,第192页。这也可以在以下位置获得:标题为“在全局环境下移动函数列表”

代码如下:

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
函数