【问题标题】:Windows 7: Installing multiple R packages via scriptWindows 7:通过脚本安装多个 R 包
【发布时间】:2012-11-05 23:22:20
【问题描述】:

我正在尝试编写在 Windows 7 上安装 R 2.15.1 的脚本。R 安装得很好,但我不知道如何从同一个批处理脚本(或任何批处理脚本,就此而言)安装多个包。下面是我调用简单 R 文件的脚本部分。

"%ProgramFiles%\R\R-2.15.1\bin\R.exe" CMD BATCH "%~dp0R packages for GME.R"

这是“R packages for GME.R”的内容,其中包含要安装的包。

install.packages("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields",dep=TRUE)

鉴于documented ownership and ACLs issues with writing to the default library folder in Windows,我尝试了以下方法:

  1. 取得“C:\Program Files\R\R-2.15.1\library”的所有权,然后运行R CMD BATCH <file>(无变化);
  2. 在同一文件夹中为我的用户帐户授予“完全控制”权限,然后运行 ​​R CMD BATCH <file>(无更改);
  3. 通过 Rprofile.site 将库文件夹更改到另一个位置,然后运行 ​​R CMD BATCH <file>(无更改);
  4. 通过 Rgui install.packages("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields",dep=TRUE) 运行命令(有效)。

到目前为止,我还没有使用 CMD 或批处理脚本来安装软件包。有什么我想念的吗?任何脚本包安装的替代方法将不胜感激。

另外,我要安装的机器是供多个用户使用的,因此首选系统范围的安装和配置。

//

编辑 2012-11-06: 这是来自 .Rout 文件的错误消息:

install.packages("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields",dep=TRUE)
Warning in install.packages("CircStats", "coda", "deldir", "gplots", "igraph",  :
  'lib = "coda"' is not writable
Error in install.packages("CircStats", "coda", "deldir", "gplots", "igraph",  : 
  unable to install packages
Execution halted

如果我之后执行library(coda),它会给出Error in library(coda) : there is no package called ‘coda’

【问题讨论】:

  • 当您通过命令行执行此操作时,它如何“工作”?它给你一个错误?它告诉你它已经成功但是当你启动 R 和 library(CircStats) 它说它没有安装?如果您收到某种错误消息,是什么错误?
  • 我想你忘了把你的包名列表包含在c()中。试试install.packages(c("CircStats","coda","deldir","gplots","igraph","ks","odesolve","RandomFields"), dep=TRUE)
  • 我将 .Rout 中的错误消息添加到上面的原始问题中。以这种方式调用install.packages() 时,R 似乎无法写入库。

标签: r


【解决方案1】:

odesolve 软件包已弃用,已被 deSolve 取代。 R 2.15.1 遇到此包时会引发错误。它可能会给您带来问题。这是我用于为新的 R 安装安装包的脚本。

libs=c("CircStats","coda","deldir","gplots","igraph","ks","odesolve‌​","RandomFields")
type=getOption("pkgType")                           
    CheckInstallPackage <- function(packages, repos="http://cran.r-project.org",
       depend=c("Depends", "Imports", "LinkingTo", "Suggests", "Enhances"), ...) {
         installed=as.data.frame(installed.packages())
    for(p in packages) {
        if(is.na(charmatch(p, installed[,1]))) { 
          install.packages(p, repos=repos, dependencies=depend, ...) 
                    }
      }
    } 
    CheckInstallPackage(packages=libs)

【讨论】:

  • 完美!当从上面的批处理脚本 (R CMD BATCH &lt;file&gt;) 调用时,它可以很好地工作。第 2 行有一个小的语法错误:type=getOption("pkgType")) 应该是 type=getOption("pkgType")(单括号)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多