作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的一个包中,我使用 .onAttach
Hook 运行一些 R 代码,然后使用 assign
使该值可用作包变量之一。我这样做是因为variable
取决于某个文件的内容,它可以在一个 session 和另一个 session 之间更改。我使用的代码是这样的:
.onAttach <- function(libname, pkgname) {
variable <- some_function()
assign("variable", variable, envir = as.environment("package:MyRPackage"))
}
library(MyRpackage)
附加包裹时我可以使用
variable
.
MyRPackage::variable
之类的操作。 (除非我已经用
library(MyRpackage)
附加了这个包。
.onLoad
中。钩子(Hook),但是我无法进行分配以使其正常工作。
.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"))
}
MyRPackage:::variable
时,它们都因一些错误而失败不使用
library
附上包裹。
最佳答案
基本上有两种方式:
assignInMyNamespace(…)
assign(…, envir = topenv())
assignInMyNamespace
覆盖它:
myvar = NULL
.onLoad = function (libname, pkgname) {
assignInMyNamespace('myvar', value)
}
未能预先声明变量将导致错误。
assign
完全有能力创建一个以前没有声明过的新变量。我们只需要告诉 R 分配变量到哪个环境,以及函数
topenv()
提供这个。
.onLoad = function (libname, pkgname) {
assign('myvar', value, envir = topenv())
}
关于r - 如何在加载时使变量可用于命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49056642/
我是一名优秀的程序员,十分优秀!