是否有任何方法在您的名称空间中定义R中的变量,使其不能被覆盖(可能是ala“最终”声明)?类似于下面的psuedocode:
> xvar <- 10
> xvar
[1] 10
xvar <- 6
> "Error, cannot overwrite this variable unless you remove its finality attribute"动机:当多次运行R脚本时,有时很容易在不经意间覆盖变量。
发布于 2014-02-20 15:35:19
查看? lockBinding
a <- 2
a
## [1] 2
lockBinding('a', .GlobalEnv)
a <- 3
## Error: cannot change value of locked binding for 'a'及其补体,unlockBinding
unlockBinding('a', .GlobalEnv)
a <- 3
a
## [1] 3发布于 2014-02-20 15:35:10
可以使用pryr包使变量常量。
install_github("pryr")
library(pryr)
xvar %<c-% 10
xvar
## [1] 10
xvar <- 6
## Error: cannot change value of locked binding for 'xvar'%<c-%运算符是assign + lockBinding的方便包装器。
就像巴普蒂斯特在评论中说的:如果你在这方面有问题,这可能是一个糟糕的编码风格的迹象。将大部分逻辑绑定到函数中将减少变量名称冲突。
https://stackoverflow.com/questions/21911863
复制相似问题