R环境离线配置

: 公司业务需要在离线机器(windows os)上部署R以及相关开发包. 在总结网络上(主要源自StackOverflow, CRAN)和自己踩的雷. 希望对大家有帮助. 有关python离线安装, 参见这里

1.下载包

测试环境: 从网络上获取相关的包和所依赖的包.

在 测试环境执行
方法一, 该方法可能会遗漏一些包. 如: caret依赖的 e1071

#设置包下载的网络路径(CRAN)
options(repos=structure(c(CRAN="http://cran.ma.imperial.ac.uk/")))
# 函数用来搜寻依赖的包. 得到所有的包名
getPackages <- function(packs){
  packages <- unlist(
      tools::package_dependencies(
          packs
        , available.packages()
        , which=c("Depends", "Imports")
        , recursive=TRUE
        )
      )
    packages <- union(packs, packages)
    packages
  }


# 指定要下载的包, 字符串数组 
# !!! xlsx包需要 Java 支持, 
Packages <- getPackages(
                    c('ggplot2','xlsx','caret','dplyr','randomForest','neuralnet','gridExtra')
                    )

# 指定下载目录
dest_dir = 'E:\\python_project\\BA_TubeBurstedAnalysis\\software_required' # '\' 在R中为转义字符, 使用'/'或者'\'
# 下载包,  注意: 若是在window 下安装 需设定 type = 'win.binary'
download.packages(
    pkgs=Packages
  , destdir= dest_dir
  , type='win.binary')

方法二, 简单粗暴 但是下载量比较大
得到测试环境所有安装的包

Packages <- installed.packages()[,1]
# 指定下载目录
dest_dir = 'E:\\python_project\\BA_TubeBurstedAnalysis\\software_required' # '\' 在R中为转义字符, 使用'/'或者'\'
# 生成包名到pkgnames.csv
pkgs = paste0("c(\"",paste(packages, collapse= '\",\"'), "\")")
write.table(pkgs,file=file.path(dest_dir,'pkgnames.csv'), row.names = FALSE, col.names = FALSE, quote=FALSE)
# 下载包,  注意: 若是在window 下安装 需设定 type = 'win.binary'
download.packages(
    pkgs=Packages
  , destdir= dest_dir
  , type='win.binary') 

2. install, 安装R以及相关的包

(1)将R以及第一步下载的包拷贝到目标主机
(2) 安装R
(3) 安装所需要的包

# 在目标主机上执行.
library(tools)
source_folder = 'C:\\Users\\Administrator\\Desktop\\software_required' # 拷贝的路径
write_PACKAGES(source_folder, type='win.binary')
# 若是用方法二, 把pkgnames.csv里面的拷贝粘贴里面
install.packages(c('ggplot2','xlsx','caret','dplyr','randomForest','neuralnet','gridExtra','e1071'), contriburl= 'file:///C:\\Users\\Administrator\\Desktop\\software_required') 

你可能感兴趣的:(r语言)