【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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM