在我的某个软件包中,我使用.onAttach
钩子运行一些R代码,然后使用assign
将值作为软件包变量之一提供。我这样做是因为variable
取决于某个文件的内容,这个文件可能会在一个会话和另一个会话之间发生变化。 我使用的代码如下:
.onAttach <- function(libname, pkgname) {
variable <- some_function()
assign("variable", variable, envir = as.environment("package:MyRPackage"))
}
当我使用 library(MyRpackage)
命令调用包后,我就可以使用 variable
了。
但是如果没有预先使用 library(MyRpackage)
命令加载包,那么就无法使用 MyRPackage::variable
。
我知道这是因为我应该将这段代码放在 .onLoad
钩子函数中,但是我无法进行正确的赋值以使其生效。
我尝试过:
.onLoad <- function(libname, pkgname) {
variable <- some_function()
assign("variable", variable, envir = as.environment("namesoace:MyRPackage"))
}
和
.onLoad <- function(libname, pkgname) {
variable <- some_function()
assign("variable", variable, envir = asNamespace("MyRPackage"))
}
但是当我在不使用library
附加软件包的情况下运行MyRPackage:::variable
时,它们两个都会出现一些错误。
在.onLoad
钩子中正确的赋值方法是什么?
some_function
,以便可以调用MyRPackage::some_function()
吗? - chinsoon12MyRPackage:::variable
,因为只有在实际加载包时才会分配variable
。这是我不理解的事情吗? - F. Privé