在启动 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 会话时安装包的主要内容,如果未能解决你的问题,请参考以下文章