簡體   English   中英

更改環境后功能不起作用

[英]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的環境更改為FUNnenvisito其父環境envisito空環境。 當您調用FUNn (函數定義在全局環境中)時,它將在其環境(即envisito )中搜索函數{ (在FUNn找到的第一個函數)。 它在envisito找不到{ ,因此它在一個環境中查找。 但是,該empty environment是空的empty environment 因此,它失敗並顯示一個錯誤,即找不到功能{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM