在.Rprofile中使用库定义的函数

时间:2014-12-11 19:29:37

标签: r

我有一个库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是最后要运行的东西,这意味着在所有其他启动代码运行之后才会加载默认包。

0 个答案:

没有答案