我正在构建一个具有全局变量的包,代码如下:
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
无法更改,因为加载包后环境是密封的。但是可以调用get.at()
自定义函数.onLoad
或.onAttach
成功调用。正如@daniel 所说,另一个解决方案是创建一个属于内部环境的变量。