更改环境后功能不起作用
Function doesn't work after change its environment
我想呼叫增援来帮助解决这个错误,如下所示:
首先我创建了我的环境:
envizito <- new.env(parent = emptyenv())
attr(envizito, "name") <- "envizito"
并分配了一个名为 aaa
的新变量:
envizito$aaa <- 12
我创建了一个函数:
FUNn <- function() {print(envizito$aaa)}
environment(FUNn)
# <environment: R_GlobalEnv>
然后,我将其环境更改为 envizito
:
environment(FUNn) <- envizito
environment(FUNn)
# <environment: 0xc20b0a8>
#attr(,"name")
#[1] "envizito"
但在调用 FUNn()
后显示以下错误:
FUNn()
# Error in { : could not find function "{"
PS:虽然environment(FUNn)
指向内存中的同一个地方,但当我调用ls()
时它并没有出现
ls(envir = envizito, all.names = TRUE)
# [1] "aaa"
任何意见和建议将不胜感激!
感谢您的关注。
{
就像 R 中的其他所有不是对象的东西一样,是一个函数。当您创建 envizito
时,您将空环境指定为其父级。空环境,顾名思义,不包含任何对象,即它是空的。
当您将 FUNn
的环境更改为 envisito
时,您将其父环境设为空环境。当您调用 FUNn
(函数定义在全局环境中)时,它会在其环境(即 envisito
)中搜索函数 {
(它在 FUNn
中找到的第一个函数) ).它无法在 envisito
中找到 {
,因此它向上查找一个环境。但是,该环境是空的 empty environment
。因此,它失败并显示找不到函数 {
.
的错误
我想呼叫增援来帮助解决这个错误,如下所示:
首先我创建了我的环境:
envizito <- new.env(parent = emptyenv())
attr(envizito, "name") <- "envizito"
并分配了一个名为 aaa
的新变量:
envizito$aaa <- 12
我创建了一个函数:
FUNn <- function() {print(envizito$aaa)}
environment(FUNn)
# <environment: R_GlobalEnv>
然后,我将其环境更改为 envizito
:
environment(FUNn) <- envizito
environment(FUNn)
# <environment: 0xc20b0a8>
#attr(,"name")
#[1] "envizito"
但在调用 FUNn()
后显示以下错误:
FUNn()
# Error in { : could not find function "{"
PS:虽然environment(FUNn)
指向内存中的同一个地方,但当我调用ls()
ls(envir = envizito, all.names = TRUE)
# [1] "aaa"
任何意见和建议将不胜感激! 感谢您的关注。
{
就像 R 中的其他所有不是对象的东西一样,是一个函数。当您创建 envizito
时,您将空环境指定为其父级。空环境,顾名思义,不包含任何对象,即它是空的。
当您将 FUNn
的环境更改为 envisito
时,您将其父环境设为空环境。当您调用 FUNn
(函数定义在全局环境中)时,它会在其环境(即 envisito
)中搜索函数 {
(它在 FUNn
中找到的第一个函数) ).它无法在 envisito
中找到 {
,因此它向上查找一个环境。但是,该环境是空的 empty environment
。因此,它失败并显示找不到函数 {
.