【发布时间】:2013-02-09 07:59:43
【问题描述】:
我正在构建一个包含全局变量的包,代码如下:
at <- NA
get.at <- function() {
if (is.na(at)) {
at <<- 1
}
at
}
但是当我调用get.at() 时,它会引发错误:
Error in get.at() : cannot change value of locked binding for 'at'
我该如何解决这个问题?
编辑:
at无法更改,因为加载包后环境已密封。但是可以在自定义函数.onLoad或.onAttach中调用get.at()成功。另一个解决方案是创建一个属于内部环境的变量,正如@daniel 所说。
【问题讨论】:
-
您的代码在复制粘贴到 R 控制台时可以正常工作
-
是的,它在控制台中工作。但是当我将它构建到一个包中并调用该函数时,它会引发错误。
标签: r variables package assign