我有一个库foo
,它定义了一个我想用作自定义错误处理程序的函数bar
。要使用bar
替换默认错误处理程序,只要导入了options(stop = bar)
,我就会运行bar
。
每当我开始R会话时,我希望bar
自动设置为默认错误处理程序。为此,我将以下代码放在.Rprofile
文件中:
options(defaultPackages=c(getOption("defaultPackages"), "foo"),
error = Bar)
不幸的是,这不起作用。在启动期间,R将首先运行.Rprofile
中的所有内容,然后运行.First.sys
以加载默认包。这意味着在设置选项后将加载foo
并导入bar
,这意味着将发出错误,指出无法找到bar
。
解决此问题的方法是手动加载foo
,而不是使用以下内容:
if (require(foo))
options(error = Bar)
这是一个安全的解决方案吗?似乎在启动R时立即自动加载foo
可能会在安装库时导致无法预料的问题。
除此之外还有其他解决方案吗?关于R启动的文档说.First.sys
是最后要运行的东西,这意味着在所有其他启动代码运行之后才会加载默认包。