R語言-自動批處理


R語言-自動批處理文件

  在處理數據的過程中,可以制作一個自動批處理文件,讓它具有智能的效果,自動化完成復雜的數據處理過程,提高工作效率,解放生產力,從而可以投入更多的精力到數據分析和數據挖掘中,發現數據中的"金子",體現數據的真正價值!!!


方法1:

  R語言中 C:\Program Files\R\R-3.2.0\bin\x64 中有個 Rscript.exe,這是腳本運行的程序。
  • (1)將你的R語言程序寫入一個叫mywork.r的文件中,文件名字自己隨便起就行。

  • (2)建立個Rcmd.txt文件,里面寫入代碼 :

      cd C:\Program Files\R\R-3.2.0\bin
      Rscript F:\cs\windowsCode.R
    
  然后,將Rcmd.txt修改擴展名為Rcmd.bat然后雙擊就ok了,自動運行。

方法2:

  在 windows 命令行中敲入"調用命令":
  • 調用命令:

      r CMD BATCH F:\cs\windowsCode.R
      或
      r CMD BATCH --quiet --slave --no-restore --no-save --no-init-file F:\dataHQ\weather_data\windowsCode.R
    
  (注意 CMD BATCH 都要大寫)

方法參數詳解

  如果你想編寫一個命令腳本,如UNIX或OS X系統的shell腳本,或Windows系統中的批處理腳本,並且你希望在這些腳本中執行R代碼。

解決方案

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

###########如果需要將輸出結果發送到標准輸出設備中,或者希望將命令行參數傳遞到腳本中,可以考慮應用Rscript命令:
$ Rscript scriptfile arg1 arg2 arg3

討論

  R是一個交互式軟件,它提示用戶輸入,然后顯示輸出結果。有時你想在批處理模式下運行R,從腳本讀取命令。這對於shell內部的腳本,例如含有統計分析的腳本而言特別有用。
  CMD BATCH子命令把R轉到批處理模式,它讀取腳本文件scriptfile並且把輸出寫入輸出文件outputfile。這個運行過程中不與用戶交互。
  你可能會根據具體情況使用命令行選項,調整R的批處理過程。例如,使用--quiet選項來避免啟動信息,否則將使輸出信息混亂:
$ R CMD BATCH --quiet myScript.R results.out
  下面是一些其他批處理模式下的實用命令:
--slave
  類似於--quiet,它禁止回送輸入的信息,使R軟件輸出的信息更為簡潔。
--no-restore
  在R啟動時不還原工作空間。對於希望以空白工作空間啟動R的腳本而言,這個選項很有必要。
--no-save
  在退出R時,不保存工作空間;否則,R會保存當前工作空間並覆蓋原有工作目錄中的.RData文件。
--no-init-file
  不讀取.Rprofile文件或者~/. Rprofile文件。
  在腳本運行結束后,CMD BATCH子命令一般會使用proc.time函數顯示其執行的時間。如果你不需要顯示該時間,可以在代碼最后一行調用參數為runLast=FALSE的q函數,它將防止調用proc.time函數。
  CMD BATCH子命令有兩個限制條件:輸出必須總是傳送到一個文件中,並且無法簡單地將命令行參數傳送到腳本中。如果這兩個限制成為問題,可以考慮使用R軟件自帶的Rscript程序。Rscript命令的第一個命令行參數是腳本文件的名稱,其余的參數將傳遞給腳本代碼:
$ Rscript myScript.R arg1 arg2 arg3
  在腳本中,命令行參數可以通過調用commandArgs函數來獲取,該函數會把參數作為一個字符串向量返回:
argv <- commandArgs(TRUE)
  Rscript程序和CMD BATCH命令使用上面所提到的相同的命令行選項。
  將輸出結果輸出到標准輸出設備中,該設備是R從調用它的shell腳本中繼承來的。當然,可以通過一般的重定向方法將輸出重定向到一個文件中:
$ Rscript --slave myScript.R arg1 arg2 arg3 >results.out
  下面是一個名為arith.R的簡易R腳本文件,它對兩個命令行參數進行四個算術運算:
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")
  腳本以下面的形式調用:
$ Rscript arith.R 2 3.1415
  產生如下結果:
x = 2
y = 3.1415
x + y = 5.1415
x - y = -1.1415
x * y = 6.283
x / y = 0.6366385
  在Linux或UNIX系統中,你可以在腳本的開頭添加#!后跟隨Rscript程序的路徑,這樣腳本就是完全自我包含的了(即代碼變得完全獨立於外部)。假定Rscript程序安裝在/usr/bin/Rscript目錄中,你可以在arith.R腳本文件中添加下面一行,使其成為自我包含代碼:
#!/usr/bin/Rscript --slave
argv <- commandArgs(TRUE)
x <- as.numeric(argv[1])
.
. (etc.)
.
  在提示符處,我們把腳本文件標記為可執行文件:
$ chmod +x arith.R
  此時我們可以不用Rscript前綴而直接調用腳本代碼:
$ arith.R 2 3.1415

  參考圖書: R語言經典實例


免責聲明!

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



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