R的批處理——調用Rscripts及傳參

下面我通過不傳參和傳參的方式進行調用。

  • 不傳參的方式

首先,新建一個R腳本(E:\test.R),目的是往E盤寫入一個文件。腳本內容如下:

# test.R
​data = data.frame(x=c(1,2,3), y=c(4,5,6))
write.csv(data, "e:/test.csv", row.names = F)

然後新建一個bat腳本,腳本調用方式爲:Rscripts的路徑 待執行的R腳本的路徑 參數1 參數2 ... 參數n。

例如,我的Rscripts的路徑爲:D:\R-3.5.1\bin\x64\Rscript.exe,待執行的R腳本的路徑爲:E:\test.R。參數爲選填,這裏先不填,bat腳本如下:

@echo off
D:\R-3.5.1\bin\x64\Rscript.exe e:\test.R
echo 執行完畢
pause

注:加個pause,這樣腳本執行完萬一報錯可以看到錯誤原因,否則程序會閃退。

  • 傳參的方式

將test.R進行修改,因爲原來的data有3行數據,我現在想傳入一個行數的參數,選擇性的輸出數據,例如收到參數“2”,則在csv中寫入data的前2行。

# test.R
args <- (commandArgs(TRUE))
rows <- as.numeric(args[1])

data = data.frame(x=c(1,2,3), y=c(4,5,6))
write.csv(data[1:rows,], "e:/test.csv", row.names = F)

此時,bat腳本需要傳入參數,按照上述的調用方式,稍作修改即可。

@echo off
D:\R-3.5.1\bin\x64\Rscript.exe e:\test.R 2
echo 執行完畢
pause

然後執行文件,結果如圖所示: 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章