日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

3.13 批量運(yùn)行R代碼

 panhoy 2014-08-19

問題

你正在編寫一個(gè)命令腳本,如UNIX或OS X系統(tǒng)的shell腳本,或Windows系統(tǒng)中的批處理腳本,并且你希望在這些腳本中執(zhí)行R代碼。

解決方案

使用帶有CMD BATCH子命令的方式運(yùn)行R程序,并給出腳本文件名和輸出文件名:
$ R CMD BATCH scriptfile outputfile

如果需要將輸出結(jié)果發(fā)送到標(biāo)準(zhǔn)輸出設(shè)備中,或者希望將命令行參數(shù)傳遞到腳本中,可以考慮應(yīng)用Rscript命令:
$ Rscript scriptfile arg1 arg2 arg3

討論

R是一個(gè)交互式軟件,它提示用戶輸入,然后顯示輸出結(jié)果。有時(shí)你想在批處理模式下運(yùn)行R,從腳本讀取命令。這對(duì)于shell內(nèi)部的腳本,例如含有統(tǒng)計(jì)分析的腳本而言特別有用。

CMD BATCH子命令把R轉(zhuǎn)到批處理模式,它讀取腳本文件scriptfile并且把輸出寫入輸出文件outputfile。這個(gè)運(yùn)行過程中不與用戶交互。

你可能會(huì)根據(jù)具體情況使用命令行選項(xiàng),調(diào)整R的批處理過程。例如,使用--quiet選項(xiàng)來避免啟動(dòng)信息,否則將使輸出信息混亂:
$ R CMD BATCH --quiet myScript.R results.out

下面是一些其他批處理模式下的實(shí)用命令:
--slave

類似于--quiet,它禁止回送輸入的信息,使R軟件輸出的信息更為簡(jiǎn)潔。
--no-restore

在R啟動(dòng)時(shí)不還原工作空間。對(duì)于希望以空白工作空間啟動(dòng)R的腳本而言,這個(gè)選項(xiàng)很有必要。
--no-save

在退出R時(shí),不保存工作空間;否則,R會(huì)保存當(dāng)前工作空間并覆蓋原有工作目錄中的.RData文件。
--no-init-file

不讀取.Rprofile文件或者~/. Rprofile文件。

在腳本運(yùn)行結(jié)束后,CMD BATCH子命令一般會(huì)使用proc.time函數(shù)顯示其執(zhí)行的時(shí)間。如果你不需要顯示該時(shí)間,可以在代碼最后一行調(diào)用參數(shù)為runLast=FALSE的q函數(shù),它將防止調(diào)用proc.time函數(shù)。

CMD BATCH子命令有兩個(gè)限制條件:輸出必須總是傳送到一個(gè)文件中,并且無法簡(jiǎn)單地將命令行參數(shù)傳送到腳本中。如果這兩個(gè)限制成為問題,可以考慮使用R軟件自帶的Rscript程序。Rscript命令的第一個(gè)命令行參數(shù)是腳本文件的名稱,其余的參數(shù)將傳遞給腳本代碼:
$ Rscript myScript.R arg1 arg2 arg3

在腳本中,命令行參數(shù)可以通過調(diào)用commandArgs函數(shù)來獲取,該函數(shù)會(huì)把參數(shù)作為一個(gè)字符串向量返回:
argv <- commandArgs(TRUE)

Rscript程序和CMD BATCH命令使用上面所提到的相同的命令行選項(xiàng)。

 將輸出結(jié)果輸出到標(biāo)準(zhǔn)輸出設(shè)備中,該設(shè)備是R從調(diào)用它的shell腳本中繼承來的。當(dāng)然,可以通過一般的重定向方法將輸出重定向到一個(gè)文件中:
$ Rscript --slave myScript.R arg1 arg2 arg3 >results.out

下面是一個(gè)名為arith.R的簡(jiǎn)易R(shí)腳本文件,它對(duì)兩個(gè)命令行參數(shù)進(jìn)行四個(gè)算術(shù)運(yùn)算:
argv <- commandArgs(TRUE)
x <- as.numeric(argv[1])
y <- as.numeric(argv[2])
cat("x =", x, "\n")
cat("y =", y, "\n")
cat("x + y = ", x + y, "\n")
cat("x - y = ", x - y, "\n")
cat("x * y = ", x * y, "\n")
cat("x / y = ", x / y, "\n")

腳本以下面的形式調(diào)用:
$ Rscript arith.R 2 3.1415

產(chǎn)生如下結(jié)果:
x = 2
y = 3.1415
x + y = 5.1415
x - y = -1.1415
x * y = 6.283
x / y = 0.6366385

在Linux或UNIX系統(tǒng)中,你可以在腳本的開頭添加#!后跟隨Rscript程序的路徑,這樣腳本就是完全自我包含的了(即代碼變得完全獨(dú)立于外部)。假定Rscript程序安裝在/usr/bin/Rscript目錄中,你可以在arith.R腳本文件中添加下面一行,使其成為自我包含代碼:
#!/usr/bin/Rscript --slave
argv <- commandArgs(TRUE)
x <- as.numeric(argv[1])
.
. (etc.)
.

在提示符處,我們把腳本文件標(biāo)記為可執(zhí)行文件:
$ chmod +x arith.R

此時(shí)我們可以不用Rscript前綴而直接調(diào)用腳本代碼:
$ arith.R 2 3.1415

另請(qǐng)參閱

有關(guān)R中運(yùn)行腳本文件的詳情,參見方法3.12。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多