HOWTO · R
在 R 中註釋掉多行
在本文中,你將學習如何在 R 中註釋出多行,而不必在每一行的開頭手動寫一個#字元來註釋。
本頁內容
R 沒有多行註解語法:# 會將所在行直到行尾的內容標記為註解。若要暫時停用多行程式碼,請在每一行開頭加上 #;要恢復執行時,再移除這些前綴。編輯器也能替選取的多行內容批次執行這項操作。
執行以下範例:
本節中的程式碼以及顯示的標籤或輸出仍為英文。
# This line is a comment.
total <- 2 + 3
print(total)
[1] 5
第一行不會被 R 當成程式碼執行;指派運算與 print() 呼叫仍可執行。提供的執行結果顯示範例成功完成,並印出 [1] 5。
R 的註解如何運作
註解符號只會作用於所在行的其餘部分。例如,在 answer <- 42 # keep this value 中,R 會執行指派運算,並忽略 # 後面的文字。以 # 開頭的行也可以用來說明程式碼,而不會改變指令的執行方式。每則註解都在換行處結束,因此一組連續的註解行仍是多則各自獨立的單行註解,而不是一則區塊註解。
要註解程式碼,請在每一行選取內容前加上前綴,包括延續行。如果有任何可執行的行未加上註解,從檔案載入指令碼時,R 仍會執行該行。取消註解則是反向操作:移除想再次執行之各行的註解前綴。
在編輯器中註解程式碼區塊
在 RStudio 中選取要處理的行;Windows 請按 Ctrl+Shift+C,macOS 請按 Command+Shift+C。同一個指令會切換選取內容的註解狀態,因此執行後請先檢查結果,再執行程式碼。編輯器的詳細資訊請參閱 RStudio 鍵盤快速鍵。
在 Windows 的 Notepad++ 中,Ctrl+Q 可以切換所選行的註解狀態。在 Emacs 中,執行 M-x comment-region 來註解選取內容;若要還原,則執行 M-x uncomment-region。快速鍵會因編輯器、作業系統、按鍵配置與選取方式而異;若按鍵不符預期,請查閱該編輯器的指令清單。這些指令會加入或移除行前綴,不會為 R 新增註解語法。
為什麼 scan() 不會建立多行註解
scan() 會從連線或輸入中讀取值,並將值傳回 R。它不會把文字插入來源檔,也不會將輸入的行轉成註解。同樣地,rm() 會從工作區移除 R 物件,不會刪除來源文字。在 R 主控台輸入任意文字,不能用來註解指令碼,因為 R 會嘗試將提交的每一行解析為輸入。請改用編輯器的註解指令,或在來源檔的每一行前加上 #。
使用 R 輔助函式將剪貼簿文字轉為 # 註解
如果編輯器沒有方便的選取內容註解指令,可以選擇使用 FormatComment 輔助函式,在剪貼簿的每一行前加上 # 和空格。函式中的 readClipboard() 與 writeClipboard() 僅適用於 Windows。請在 Windows 的 R 工作階段中定義函式,複製純文字或程式碼後再呼叫;在將結果取代指令碼中的內容之前,請先檢查格式。這個函式會把格式化後的文字寫回剪貼簿;若要保留原本的剪貼簿內容,請先將結果貼到安全的位置。
本節中的程式碼以及顯示的標籤或輸出仍為英文。
FormatComment <- function() {
lines <- readClipboard()
commented <- paste0("# ", lines)
writeClipboard(commented, format = 1)
invisible(commented)
}
提供的輔助函式案例成功完成,且未回報任何輸出。這項結果無法證明函式在實際 Windows 剪貼簿或互動式工作階段中的行為。此函式適用於複製的文字行;貼上後請檢查結果,尤其是來源內容含有縮排或延續語法時。一般程式碼編輯通常使用編輯器的註解切換功能較容易還原,也較不容易破壞格式。