gpt4 book ai didi

r - 更改环境后功能不起作用

转载 作者:行者123 更新时间:2023-12-04 21:54:59 36 4
gpt4 key购买 nike

我想调用增援来帮助解决此错误,如下所示:

首先我创建了我的环境:

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 中找到 {,因此它会查找一个环境。然而,该环境是空环境,它是空的。因此,它会失败并显示找不到函数 { 的错误。

关于r - 更改环境后功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46183835/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com