在包安装期间向.First()添加行

在包安装期间向.First()添加行,r,R,我正在为我的公司开发R软件包,这些公司的员工不太懂技术 为了方便用户的生活,我考虑在全局位置设置一组脚本,可以在启动时获取这些脚本,以便更新和加载相关包 我的想法是为每个定制包创建一个脚本,只有在安装了partialar包的情况下才能获取该脚本的源代码。为此,我需要在用户安装不同软件包时修改.First()函数,以便在安装软件包A后: .First() <- function(){ source('script_to_package_A') } .First() <- fu

我正在为我的公司开发R软件包,这些公司的员工不太懂技术

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

我的想法是为每个定制包创建一个脚本,只有在安装了partialar包的情况下才能获取该脚本的源代码。为此,我需要在用户安装不同软件包时修改.First()函数,以便在安装软件包A后:

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

.First()我想获得所需的最简单方法是在所有机器上安装一个软件包。如果您可以先在everyones机器上更改
.First
功能,则可以安装软件包

您的
。第一个
功能是:

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

.First()为什么不在启动时运行函数
update.packages(ask=F)
,这样它就可以自动更新所有内容(每个包都不需要确认)?此外,您还错过了编写R包的全部要点。为什么要从一个包中获取一个脚本,而该功能可能只存在于该包中?而不是
source
内部
First()
,只需调用该软件包中的相关函数。原因是我希望能够在每次安装时更改启动过程中发生的情况-因此我认为从脚本中获取资源是一个好主意,我可以随意更改……在每台机器上安装所有软件包有什么不好的?当然,这完全取决于你在做什么。我希望有一个解决方案可以在不同国家的不同站点使用,这样我就不能参加每台电脑-我不是it部门的一员,只是一个想让需要我的项目的人可以使用我的项目的研究人员。你不想在
中安装.packages。首先
,因为安装包需要重新启动R,然后运行
。首先
,然后安装包,然后重新启动R,如果包装
install.packages
调用
if(interactive()){…}
您应该会没事的。尽管我认为您需要显式使用
utils::install.packages()
并指定一个repo。@Dason,是的,除非OP希望在启动交互式会话时安装该包