0

我正在为我的公司开发 R 包,该公司的员工不太懂技术。

为了方便用户的生活,我正在考虑在全球位置设置一组脚本,这些脚本可以在启动时获取,以便更新和加载相关包。

我的想法是为每个自定义包创建一个脚本,只有在安装了该特定包时才能获取该脚本。为此,我需要在用户安装不同的包时修改 .First() 函数,以便在安装包 A 之后:

.First() <- function(){
    source('script_to_package_A')
}

如果安装了包 B:

.First() <- function(){
    source('script_to_package_A')
    source('script_to_package_B')
}

因此,如果 .First() 已经定义并且该行不在其中,或者如果不存在 .Rprofile,则我有兴趣在 .Rprofile 文件中添加一行。

实现这一目标的最佳方法是什么?

最好的祝愿托马斯

编辑:只是为了澄清-我正在寻找的是一种修改启动期间调用的 .First() 函数的安全方法。这意味着如果用户已经定义了一个 .First() 函数,则只会追加添加而不是替换旧的 .First()。最好在安装特定软件包时进行此添加,但这不是必需的。我对添加到 .First() 函数中的内容相当有信心,所以这不是问题。

4

1 回答 1

0

我怀疑获得所需内容的最简单方法是在所有机器上安装一个软件包。如果您可以更改.First每个人机器上的功能,那么您可以安装一个包。

你的.First功能是:

.First() <- function(){
    library(mypkg)
    run_mypkg_fun()
    ##Could also check for package updates
    ##update.packages("mypkg"...)
}

该功能run_mypkg_fun可以执行您想要的所有检查,包括:

  • 安装包
  • 根据安装的内容运行不同的功能。
于 2012-10-15T15:19:45.073 回答