Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用.onAttach附加包时存储变量_R - Fatal编程技术网

R 使用.onAttach附加包时存储变量

R 使用.onAttach附加包时存储变量,r,R,加载包时,我想在包的环境中存储变量的值。这是我的当前版本,但在library(mypkg)之后,我无法查看/访问myu var: .onAttach符号仅存在于该函数的范围内。更改环境不会在不同的范围内重新分配。而my_var只是一个“常规”变量,变量没有environments()(只有函数和公式,可能还有其他变量,但不是所有变量)。例如,内置的letters变量来自base,但environment(letters)返回NULL 如果要分配将存在于函数外部特定命名空间中的变量,应使用assi

加载包时,我想在包的环境中存储变量的值。这是我的当前版本,但在
library(mypkg)
之后,我无法查看/访问
myu var


.onAttach符号仅存在于该函数的范围内。更改环境不会在不同的范围内重新分配。而
my_var
只是一个“常规”变量,变量没有
environments()
(只有函数和公式,可能还有其他变量,但不是所有变量)。例如,内置的
letters
变量来自base,但
environment(letters)
返回NULL

如果要分配将存在于函数外部特定命名空间中的变量,应使用
assign()

.o有关有效解决方案,请参见eg。我首先在
.onAttach()
之外创建环境。
.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
}
.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"))
}