在程序包安装期间将行添加到.First()

时间:2012-10-15 12:04:26

标签: r

我正在为我的公司开发R套餐,而不是那些技术娴熟的员工。

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

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

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

然后安装包B:

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

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

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

最好的祝福 托马斯

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

1 个答案:

答案 0 :(得分:0)

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

您的.First功能将是:

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

函数run_mypkg_fun可以执行您想要的所有检查,包括:

  • 安装包
  • 根据已安装的内容运行不同的功能。