Jam*_*son 37 statistics r const constants
我在R工作,我想定义一些我(或我的一个合作者)无法改变的变量.在C++中我会这样做:
const std::string path( "/projects/current" );
Run Code Online (Sandbox Code Playgroud)
我如何用R编程语言执行此操作?
为清晰起见编辑:我知道我可以在R中定义这样的字符串:
path = "/projects/current"
Run Code Online (Sandbox Code Playgroud)
我真正想要的是一种语言结构,它保证任何人都不能改变与名为"path"的变量相关的值.
编辑以回复评论:
从技术上来说,const是一个编译时保证,但在我看来,R解释器会抛出一个带有错误消息的停止执行.例如,看看当您尝试将值分配给数字常量时会发生什么:
> 7 = 3
Error in 7 = 3 : invalid (do_set) left-hand side to assignment
Run Code Online (Sandbox Code Playgroud)
所以我真正想要的是一种语言功能,它允许您只分配一次值,当您尝试将新值分配给声明为const的变量时,应该会出现某种错误.我不关心错误是否在运行时发生,特别是如果没有编译阶段.维基百科的定义在技术上可能不是常量,但它非常接近.看起来这在R编程语言中是不可能的.
had*_*ley 44
见lockBinding:
a <- 1
lockBinding("a", globalenv())
a <- 2
Error: cannot change value of locked binding for 'a'
Run Code Online (Sandbox Code Playgroud)
由于您计划将代码分发给其他人,您可以(应该?)考虑创建一个包.在该包中创建一个NAMESPACE.在那里,您可以定义具有常量值的变量.至少对你的包使用的功能.看看Tierney(2003)R的名字空间管理