相关疑难解决方法(0)

R中包中的全局变量

我正在用R开发一个包.我有一堆函数,其中一些需要一些全局变量.如何管理包中的全局变量?

我已经阅读了一些关于环境的内容,但我不明白它是如何工作的,如果这就是解决问题的方法.

r global-variables

48
推荐指数
3
解决办法
1万
查看次数

R如何在加载时使变量可用于命名空间

在我的一个包中,我使用.onAttach钩子来运行一些R代码,然后使用它assign来使值可用作包变量之一.我这样做是因为variable取决于某个文件的内容,它可以在一个会话和另一个会话之间切换.我使用的代码如下:

.onAttach <- function(libname, pkgname) {
   variable <- some_function()
   assign("variable", variable, envir = as.environment("package:MyRPackage"))
}
Run Code Online (Sandbox Code Playgroud)

当我附上包装时library(MyRpackage)我可以使用variable.

然而,不可能做类似的事情MyRPackage::variable(除非我已经附上了包library(MyRpackage).

我知道这是因为我应该将该代码放在.onLoad钩子中,但是我无法进行赋值以使其工作.

我试过了

.onLoad <- function(libname, pkgname) {
   variable <- some_function()
   assign("variable", variable, envir = as.environment("namesoace:MyRPackage"))
}
Run Code Online (Sandbox Code Playgroud)

.onLoad <- function(libname, pkgname) {
   variable <- some_function()
   assign("variable", variable, envir = asNamespace("MyRPackage"))
}
Run Code Online (Sandbox Code Playgroud)

但是当我在MyRPackage:::variable不使用library附加包的情况下运行时,它们都会失败并出现一些错误.

在.onLoad钩子中进行赋值的正确方法是什么?

r devtools r-package

6
推荐指数
2
解决办法
614
查看次数

标签 统计

r ×2

devtools ×1

global-variables ×1

r-package ×1