【发布时间】:2014-01-18 20:06:32
【问题描述】:
我正在尝试将变量 true、false、na 和 null 的 Pascal-Case 版本分配到我的 R 包中。这很容易做到,但我也想锁定绑定以防止重命名变量。
# An anti-example from the base libraries
F <- TRUE
T <- FALSE
T && T
FALSE
我不知道如何锁定包中的变量以防止进一步修改。跟随模拟包不起作用
# test.R
True <- TRUE
lockBinding('True', environment())
#DESCRIPTION
Collate:
'test.R'
运行 R CMD 检查时出现以下错误:
Error in eval(expr, envir, enclos) :
cannot change value of locked binding for 'True'
锁定 R 包变量以使其无法重新分配的正确方法是什么?
编辑:包含错误的错误信息。
【问题讨论】:
-
你没有告诉我们整个故事。令牌
Na未在 R 中保留,因此您必须创建它或在它不存在时尝试访问它......或其他东西。错误消息不是指“真”(也不是 R 中的保留字。) -
FWIW,一旦加载包,绑定就会被锁定,所以你只会阻止包内的代码在初始安装和加载期间修改绑定。这真的是你的目标吗?
-
@MartinMorgan 我不确定这是不是真的。例如,要求(plyr); llply
-
@IShouldBuyABoat 考虑到我收到的错误消息,我倾向于同意(顺便修复了消息);错误很奇怪。我没有在其他地方分配变量,它是 collate 字段中的第一个函数,所以如果有一个细节我会遗漏,我不确定它是什么。