獨立 R 程式的基本結構以及如何呼叫它

第一個獨立的 R 指令碼

程式 R(Windows 下的 R.exe)不執行獨立的 R 指令碼,而是由名為 RscriptRscript.exe)的程式執行,預設情況下,該程式包含在 R 中。

為了暗示這一事實,獨立的 R 指令碼以一個名為 Shebang line 的特殊行開始,該行包含以下內容:#!/usr/bin/env Rscript。在 Windows 下,需要一個額外的措施,稍後會詳細說明。

以下簡單的獨立 R 指令碼將檔名“hist.png”下的直方圖儲存為它作為輸入接收的數字:

#!/usr/bin/env Rscript

# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)

# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()

你可以看到獨立 R 指令碼的幾個關鍵元素。在第一行,你看到了 Shebang 線。接下來,cat("....\n") 用於向使用者列印訊息。每當要將控制檯上的使用者輸入指定為資料來源時,請使用 file("stdin")。在多個資料讀取功能(scanread.tableread.csv,…)中,可以使用它來代替檔名。使用者輸入從字串轉換為數字後,繪圖開始。在那裡,可以看出,用於寫入檔案的繪圖命令必須包含在兩個命令中。在這種情況下,這些是 png(.)dev.off()。第一個函式取決於所需的輸出檔案格式(其他常見的選擇是 jpeg(.)pdf(.))。第二個功能 dev.off() 始終是必需的。它將繪圖寫入檔案並結束繪圖過程。

準備獨立的 R 指令碼

Linux 的/蘋果機

必須首先使獨立指令碼的檔案可執行。通過右鍵單擊檔案,開啟選單中的屬性並選中許可權選項卡中的可執行檔案核取方塊,可以實現此操作。或者,命令

chmod +x PATH/TO/SCRIPT/SCRIPTNAME.R

可以在終端中呼叫。

Windows

對於每個獨立指令碼,必須使用以下內容編寫批處理檔案:

"C:\Program Files\R-XXXXXXX\bin\Rscript.exe" "%~dp0\XXXXXXX.R" %*

批處理檔案是普通文字檔案,但除了*.txt 副檔名外,它具有*.bat 副檔名。使用文字編輯器(如 notepad(不是 Word)或類似檔案)建立它,並在儲存對話方塊中將檔名放入引號 FILENAME.bat)。要編輯現有批處理檔案,請右鍵單擊該檔案並選擇編輯

你需要調整上面顯示的程式碼 XXX...

  • 插入 R 安裝所在的正確資料夾
  • 插入正確的指令碼名稱並將其放在與此批處理檔案相同的目錄中。

程式碼中元素的說明:第一部分 C:\...\Rscript.exe 告訴 Windows 在哪裡可以找到 Rscript.exe 程式。第二部分 %~dp0\XXX.R 告訴 Rscript 執行你編寫的 R 指令碼,該指令碼與批處理檔案位於同一資料夾中(%~dp0 代表批處理資料夾)。最後,%*將你提供給批處理檔案的任何命令列引數轉發給 R 指令碼。

如果雙擊批處理檔案,則執行 R 指令碼。如果在批處理檔案上拖動檔案,則相應的檔名將作為命令列引數提供給 R 指令碼。