【问题标题】:Installing packages upon starting R session在启动 R 会话时安装包
【发布时间】: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 是不常见的。

标签: r customization


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 2017-02-02
    • 2021-10-11
    • 2013-09-23
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多