我想在加载包时在包的环境中存储变量值。这是我当前的版本,但我无法在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
答案 0 :(得分:1)
符号仅存在于该函数的范围内。更改环境不会在不同范围内重新分配。而my_var
只是一个常规的&#34;变量和变量没有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"))
}