在启动 R 会话时安装包

Posted

技术标签:

【中文标题】在启动 R 会话时安装包【英文标题】:Installing packages upon starting R session 【发布时间】:2012-05-15 23:12:46 【问题描述】:

我对 R 编程相当陌生。我正在尝试自定义我的 R 设置,以便在启动 R 会话时在开始时安装一些包。我知道我可以在 Rprofile.site 文件中编写一个 .First() 函数。但是,在 .First() 函数中添加我的安装包代码后,该包不会被安装。

此外,它似乎进入了一个尝试创建包的循环,它在 R 的库文件夹中创建了一个锁定文件。这导致我的计算机真的变慢(几乎到了它被冻结的程度),因为它一直在尝试安装该软件包。

这是我添加到 Rprofile.site 文件末尾的代码。

.First <- function() 
  install.packages("customPackage.tar.gz", repos=NULL, type="source")
  cat("\nWelcome to R on ", date(), "\n") 

我什至尝试在文件中单独添加 install.packages 行(没有 .First() 函数)无济于事。

customPackage.tar.gz 是指我使用我编写的现有代码构建的包。由于这是一个自定义包,因此 repos 为 NULL。如果我没有在我的 .First() 函数中包含这一行,而只是在启动 R 会话后运行该命令,则该包会很好地安装在 R/R-2.15.0/library 文件夹中。

我需要在 R 会话开始时安装几个自定义包,这就是为什么在 Rprofile.site 文件中添加所有这些安装代码行很重要的原因。关于如何做到这一点的任何想法?我在网上看到的关于自定义 Rprofile.site 文件的所有地方都显示了仅使用已经存在的库的示例(例如,库(R2html)),但没有安装新库。感谢您的帮助!

编辑:感谢您的帮助!实际上,我确实需要为每个用户在多台机器上安装这些包,而不是让他们手动安装包一次,我认为最好在站点文件中进行。我尝试了贾斯汀的建议,先检查包裹,结果奏效了!再次感谢您的帮助!

【问题讨论】:

如果你的库中有它们,为什么每次都安装它们。只需使用library(name_of_custom_package) 当您运行 install.packages 时,它将重新启动 R... 并因此重新运行您的 .First 函数。首先添加对包的检查:if(length(grep('customPackage', installed.packages()))==0) install.packages(...). 安装包后,需要加载。尝试在install.packages 之后添加require("customPackage")。此外,您只需要安装一次软件包,而不是每次会话。在 Rprofile.site 文件中包含 install.packages 是不常见的。 另见:***.com/questions/10300769/… 和 ***.com/questions/4090169/… 【参考方案1】:

除非您从一台计算机切换到另一台计算机,否则您的库中应该已经有这个包(也就是说,一旦您安装了一个包,它就应该一直在那里)。使用 installed.packages() [,1]library() 查看库中的所有包。如果您在那里看到它,请使用它:

.First <- function() 
  require(customPackage)
  cat("\nWelcome to R on ", date(), "\n") 

【讨论】:

以上是关于在启动 R 会话时安装包的主要内容,如果未能解决你的问题,请参考以下文章

在 R 上安装包

通过命令行安装二进制压缩 R 包

R语言 包

R语言安装包时遇到的坑

在 AWS 实例上安装 R 包预测时出错

如何为箭头包安装 C++ 依赖项?