加载包时,我想在包的环境中存储变量的值。这是我的当前版本,但my_var
在以下library(mypkg)
日期之后我看不到/访问:
.onAttach <- function(libname = find.package("mypkg"), pkgname = "mypkg") {
message('on attach is called')
my_var <- my_func()
environment(my_var) <- as.environment("package:mypkg")
}
my_func <- function() {
# Do something complicated here and return complex list.
# Returning TRUE just to make it simple
TRUE
}
请注意,这my_var
是使用我包中的另一个函数计算得出的my_func
该符号仅存在于该功能范围内。更改环境不会在其他范围内重新分配。并且my_var
只是一个“常规”变量,而变量没有environments()
(仅函数和公式,可能还有其他变量,但不是所有变量)。例如,内置letters
变量来自base,但environment(letters)
返回NULL。
如果要分配一个将在函数外的特定命名空间中存在的变量,则应使用 assign()
.onAttach <- function(libname = find.package("mypkg"), pkgname = "mypkg") {
message('on attach is called')
my_var <- my_func()
assign("my_var", my_var, envir=as.environment("package:mypkg"))
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句