下面我通過不傳參和傳參的方式進行調用。
-
不傳參的方式
首先,新建一個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
然後執行文件,結果如圖所示: