如何在$R_LIBS_用户下快速复制/更新本地库?
假设如何在$R_LIBS_用户下快速复制/更新本地库?,r,R,假设 我安装的R版本是3.3.1 我的环境变量$R_LIBS_USER设置为$HOME/my/R_lib/%V;及 我有一个目录$HOME/my/R_lib/3.3.1,其中包含大量随时间推移而安装的软件包 现在我想把我的R版本升级到3.4.1,比如说 我正在寻找一种方便的方法,在新目录$HOME/my/R_-lib/3.4.1下安装新的软件包集合,这是我目前在$HOME/my/R_-lib/3.3.1下拥有的库的“3.4.1版本” (依我看,我正在寻找一种类似于Python的pip安装程序的“
$R_LIBS_USER
设置为$HOME/my/R_lib/%V
;及$HOME/my/R_lib/3.3.1
,其中包含大量随时间推移而安装的软件包$HOME/my/R_-lib/3.4.1
下安装新的软件包集合,这是我目前在$HOME/my/R_-lib/3.3.1
下拥有的库的“3.4.1版本”
(依我看,我正在寻找一种类似于Python的
pip
安装程序的“冻结”选项的功能,本质上,它会产生将来必须给安装程序的输入,以复制当前的安装。)您可以使用functioninstalled.packages
。即:
installed.packages(lib.loc = "$HOME/my/R_lib/3.3.1")
返回的对象包含大量信息(每个包说明
文件中的大多数字段),但包的名称位于第一列。因此,类似于以下内容的内容应该可以起到作用:
inst <- installed.packages(lib.loc = "$HOME/my/R_lib/3.3.1")
install.packages(inst[,1], lib="$HOME/my/R_lib/3.4.1", dependencies=FALSE)
生物导体封装:
bioc <- inst[grepl("Bioconductor",inst$Maintainer),]
source("https://bioconductor.org/biocLite.R")
biocLite(pkgs=bioc$Packages)
git <- non_cran[grepl("github", non_cran$URL),]
install.packages("devtools")
library(devtools)
for(i in seq(nrow(git))){
install_github(repo=gsub("http://github.com/","",git$URL[i]))
}
bioc我想您可以先将3.3.1目录复制到3.4.1,然后运行update.packages()
Maybe?除了其他优秀的答案之外,我个人的想法是将@plannapus answer中的install.packages
替换为p\u load
frompacman
,因为它在语法、自动检查已安装/可用版本等方面具有各种优点,等等,关于bioconductor或GitHub软件包,等等?thc确实,我还没有想到这些,我会尽快添加一些东西,以抓住这些。
git <- non_cran[grepl("github", non_cran$URL),]
install.packages("devtools")
library(devtools)
for(i in seq(nrow(git))){
install_github(repo=gsub("http://github.com/","",git$URL[i]))
}