如何自动安装所有必需的包?

How to automatically install all required packages?

现在,我使用以下方法解决依赖关系:

  1. 源文件。
  2. 如果它抱怨需要包 X,请安装包 X。
  3. 转到 1。

如果有大量必需的包,这可能会很乏味。是否有一个命令可以确定每个所需的包,然后自动安装它们?

我有 RStudio 0.98.1056 和 R 3.3.1。

我使用此代码在 R 脚本中查找所有必需的包。

# list packages in an R file 
  filename <- "C:/Data/Documents/R/myFile.R"
  tmp <- getParseData(parse(filename, keep.source=TRUE))
  crit <- quote(token == "SYMBOL_FUNCTION_CALL")
  tmp <- dplyr::filter(tmp, .dots = crit)
  tmp <- unique(sort(tmp$text))
  src <- paste(as.vector(sapply(tmp, find)))
  outlist <- tapply(tmp,factor(src),c)
  outlist

然后您可以查看输出并安装您还没有的那些。不是自动的,但它可以帮助您完成大部分工作!

(注意——我最初并没有写这段代码……是在某处找到的)

编辑:@Rich Scriven - 你是对的!我特意在脚本中添加了一个新函数,它列在 Character(0) 下。然后你必须使用 ?? 找到包也许然后安装它。

编辑 2:我解决了这个问题并想出了这个来添加到上面的代码中。它会找到未附加的包,如果它们在库中,则附加它们。如果没有,请安装它们。

 library(sos)
  toInstall <- outlist$`character(0)`
  for(i in 1:length(toInstall)){
    newPackage<-findFn(toInstall[i])[1,4]
    if (!require(newPackage,character.only = TRUE)) {
      install.packages(newPackage)
      library(newPackage,character.only = TRUE)
    }
    print(newPackage)
  }

您可以使用包 pacmanp_load 函数查看是否安装了列出的包,如果缺少则安装它们并加载它们 too.Here 是我的示例实现r-闪亮的应用程序。

if(!require('pacman'))install.packages('pacman') pacman::p_load(shiny,shinyjs,httr,jsonlite,tidyverse)