对于您的问题有一个简单的解决方法,而不用担心保护变量名称(虽然玩起来lockBinding看起来很有趣).如果某个函数被屏蔽,如在您的示例中,仍然可以在::操作员的帮助下调用屏蔽版本.
通常,语法是packagename::variablename.
(如果你想要的功能还没有从包中导出,那么你需要三个冒号,:::但是在这种情况下不适用.)
也许使用环境!这是分隔命名空间的好方法。例如:
> a <- new.env()
> assign('printer', function(x) print(x), envir=a)
> get('printer', envir=a)('test!')
[1] "test!"
Run Code Online (Sandbox Code Playgroud)