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

在.Rprofile中使用库定义的函数,r,R,我有一个库foo,它定义了一个我想用作自定义错误处理程序的函数栏。为了用bar替换默认的错误处理程序,只要导入了bar,我就会运行optionstop=bar 我希望在开始R会话时,bar自动设置为默认错误处理程序。为此,我在.Rprofile文件中添加了以下代码: 不幸的是,这行不通。在启动期间,R将首先运行.Rprofile中的所有内容,然后运行.first.sys以加载默认包。这意味着设置选项后将加载foo并导入bar,这意味着将抛出一个错误,说明找不到bar 解决此问题的一个方法是使用以

我有一个库foo,它定义了一个我想用作自定义错误处理程序的函数栏。为了用bar替换默认的错误处理程序,只要导入了bar,我就会运行optionstop=bar

我希望在开始R会话时,bar自动设置为默认错误处理程序。为此,我在.Rprofile文件中添加了以下代码:

不幸的是,这行不通。在启动期间,R将首先运行.Rprofile中的所有内容,然后运行.first.sys以加载默认包。这意味着设置选项后将加载foo并导入bar,这意味着将抛出一个错误,说明找不到bar

解决此问题的一个方法是使用以下方法手动加载foo:

if (require(foo))
  options(error = Bar)
这是一个安全的解决方案吗?似乎在启动R时立即自动加载foo可能会在安装库时引起不可预见的问题


除此之外还有其他解决方案吗?关于R启动的文档中说.First.sys是最后一个要运行的东西,这意味着在运行所有其他启动代码之前不会加载默认包。

optionError=foo::Bar有效吗?有效,但为什么?似乎每当创建foo名称空间时,就会导出Bar。
if (require(foo))
  options(error = Bar)