[英]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
的環境更改為FUNn
, envisito
其父環境envisito
空環境。 當您調用FUNn
(函數定義在全局環境中)時,它將在其環境(即envisito
)中搜索函數{
(在FUNn
找到的第一個函數)。 它在envisito
找不到{
,因此它在一個環境中查找。 但是,該empty environment
是空的empty environment
。 因此,它失敗並顯示一個錯誤,即找不到功能{
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.