如何自动安装所有必需的包?
How to automatically install all required packages?
现在,我使用以下方法解决依赖关系:
- 源文件。
- 如果它抱怨需要包 X,请安装包 X。
- 转到 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)
}
您可以使用包 pacman。p_load
函数查看是否安装了列出的包,如果缺少则安装它们并加载它们 too.Here 是我的示例实现r-闪亮的应用程序。
if(!require('pacman'))install.packages('pacman')
pacman::p_load(shiny,shinyjs,httr,jsonlite,tidyverse)
现在,我使用以下方法解决依赖关系:
- 源文件。
- 如果它抱怨需要包 X,请安装包 X。
- 转到 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)
}
您可以使用包 pacman。p_load
函数查看是否安装了列出的包,如果缺少则安装它们并加载它们 too.Here 是我的示例实现r-闪亮的应用程序。
if(!require('pacman'))install.packages('pacman')
pacman::p_load(shiny,shinyjs,httr,jsonlite,tidyverse)