zoukankan      html  css  js  c++  java
  • 【R】大型机Linux系统安装R及bsub提交R任务

    linux系统的大型机上安装R
    需要在大型机上编译安装R,大型机上操作系统是CentOS 5.4。
    实际上,参考文献2已经非常详细地列出了如何在linux操作系统上安装R。之所要要写这篇博文,是因为我们现在面临这样一个问题:如果大型机不能从网络直接下载R,而且大型机上的R久久不得更新,同时大型机的管理员不愿意更新R?
     
    安装具体步骤:
    1 在CRAN上下载最新R版本的源代码,即文件以.tar.gz结尾
    2 解压文件 tar -zxvf R-*(“R-*是R的具体版本文件信息”)并进入解压文件夹
    3 注意查看“INSTALL”文件,这个文件简要介绍了安装步骤。之后,configure
    ./configure --prefix=/home/me/R --enable-R-shlib (--enable-R-shlib保证了R package的共享)
    4 安装之 make, make install
    5 因为安装的R不是在root下,所以需要设置自己登录用户的PATH和添加R_HOME和R_LIB路径,设置方法是修改用户路径下的.bashrc文件,"..."省略了安装文件路径
    =====================================================
    # add R PATH
    # Source global definitions 
    if [ -f /etc/bashrc ]; then
    . /etc/bashrc 
    fi 
    export PATH=/home/.../R/bin:$PATH
     
    # R_HOME and R_LIB 
    PATH=${R_HOME}/bin:$PATH 
    export R_HOME=/home/.../R/bin/R 
    export R_LIBS=/home/.../R/lib64/R/library 
    export LD_LIBRARY_PATH=${R_HOME}/lib:${LD_LIBRARY_PATH}
    ======================================================
    之后,在命令行输入R,可以进入自己安装的R,会有警告“WARNING: ignoring environment value of R_HOME”,这个不影响R的正常运行。
     
    离线安装R package
    通常我们在安装R的package时候,是通过连接网络,然后直接使用函数install.packages( )。R会很聪明地将所有包的依赖关系搞定。但是,我们离线本地安装R的*.tar.gz的package呢?同样,使用install.packages( )函数,比如install.packages("mypkg.tar.gz", repos = NULL)。但是,需要自己根据“报错信息”安装依赖的包。
     
    命令行执行R CMD 
    为了能够在BSUB系统上提交R作业,需要学会使用命令行运行R编写的脚本。在linux下可以使用R CMD BATCHd等一系列命令。
    具体使用方法查看文档man R; man Rscript 
     
    第一种方法:R CMD BATCH [options] infile [outfile]
    options:默认--restore -- save --no-readline;--help 查看帮助信息;--version 查看R版本;--slave 只打印R脚本的输出,而不显示脚本具体执行情况;--no-timing 去除输出文档结束的运行时间输出。
    outfile:如果没有命名,会照搬infile名字+ .Rout
    其实,R CMD BATCH是 R CMD command [arguments]其中的一种,具体可以查看man R的文档。
    问题:knitr是一个什么角色?
     
    第二种方法:R [options] [< infile] [> outfile]
    options:--version 查看R版本;--slave 只打印R脚本的输出,而不显示脚本具体执行情况; --vanilla是 --no-save, --no-restore, --no-site-file, --no-init-file  and --no-environ的合体;--args 后面是需要传递的参数。注意:options必须选择--save,--no-save, --vanilla三个中的一个。
    比如编辑一个testR2.R文件如下:
    ===================================================================
    args <- commandArgs(TRUE)  # TRUE should be set to choose the right arguments
    paste(c("I", "like", args[1], "and", args[2], "!"), collapse = " ")
    ===================================================================
    接着运行R --slave --vanilla --args tea coffee<testR2.R >testR.Rout
    查看输出结果
    ========================================
    $ cat testR.Rout
    [1] "I like tea and coffee !"
    ========================================
     
    第三种方法:Rscript [--options] [-e expr] file [args]
    options中默认--slave --no-restore;--version 查看R版本;其他类似第二种方法中的说明。
    -e expr:可以通过expr输入R的表达式,比如 -e 'name <- "tea"; source("testR.R")'
    args:是需要输入脚本的参数
    > file:输出文件
     
    可以使用第三种方法,写成R脚本,之后放入系统运行。比如R脚本testR.R:
    ===================================================
    #! /usr/lib/R/bin/Rscript --vanilla 
    args <- commandArgs(TRUE)
    # paste(c("I", "like", args[1], "and", args[2], "!"), collapse = " ")
    print(args)
    ===================================================
     
    执行R脚本
    > chmod +x testR.R
    > ./testR.R tea coffee > testR.Rout
     
    转自:http://blog.sina.com.cn/s/blog_61f013b80100yhef.html
  • 相关阅读:
    Qt on Android:将Qt调试信息输出到logcat中
    cheap louis vuitton outlet
    mysql经常使用查询:group by,左连接,子查询,having where
    SQLSERVER 2008 链接 到 ORACLE 11
    uva 11885
    Comet入门及最简单的Java Demo
    什么是BGP线路?什么是BGP机房?
    (LeetCode)旋转数组
    ios app 实现热更新(无需发新版本号实现app加入新功能)
    hdu 4961 Boring Sum(高效)
  • 原文地址:https://www.cnblogs.com/xianghang123/p/2851480.html
Copyright © 2011-2022 走看看