[英]R environment issues when creating a package
假設我有一個初始化新環境的 function:
init <-function()
{
e <- new.env()
}
此外, init
function 存在於 another.R 文件中
然后,在它初始化之后,我想開始在不同文件中的其他 function 調用中使用它,例如
init.main <- function(e)
{
e$data <- list()
e$number <- 0
}
但是,這會拋出一個錯誤,說 object e
is not found。 我認為這是因為e
僅在本地初始化,但如果我要使用僅依賴 function 調用的 package,我將如何讓函數能夠相互通信並使用相同的環境?
這是一種方法。
init <- local({
e <- NULL
function() {
e <<- new.env(parent = emptyenv())
}
})
init.main <- function() {
e <- get("e", envir = environment(init))
}
這實際上取決於您是只想要一個e
還是希望能夠擁有具有不同內容的多個環境。
在第一種情況下,只需在 package 的頂層定義e
,並讓您的init
function 修改該副本。 例如,
e <- new.env()
init <- function() {
e <<- new.env()
}
然后您的 package 中的任何其他 function 都可以看到e
並使用它。 調用init()
將清除所有以前的內容並將其設置為空。
另一種情況要困難一些,因為您需要處理幾個具有相同名稱的函數,這些函數引用不同的e
值。 R 附帶的 R 簡介手冊的第 10.7 節中有一個示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.