在 R 中註釋掉多行

Gustavo du Mortier 2024年2月16日
  1. 使用 scan() 插入任意文字
  2. 在 R 中使用函式來註釋多行
在 R 中註釋掉多行

當你想註釋多行 R 程式碼時,傳統的方法是在你需要註釋的每一行的開頭放置一個 # 字元,因為 R 不支援多行註釋。

如果需要註釋的程式碼行數不多,執行這個任務是可以的。但是,如果你需要註釋一個很長的程式碼塊,一個能夠在所選程式碼塊中的每一行新增 # 字元的專門程式碼編輯器可能會很有用。在 RStudio 中,你可以通過在 Windows 中使用Ctrl+Shift+C組合鍵,或者在 OSX 中使用Command+Shift+C來實現。RStudio 文件提供了更多關於鍵盤快捷鍵的資訊。

Notepad++ 可以識別 R 程式碼,還允許你使用Ctrl+QCommand+Q快捷鍵來註釋程式碼。如果你使用 Emacs,也可以使用 M-x comment-region。要恢復操作,使用 M-x 取消註釋區域

使用 scan() 插入任意文字

你也可以使用 scan() 函式在你的程式碼中插入任何任意文字,之後你需要使用 rm() 從記憶體中刪除文字。但是要確保 rm() 之前的註釋程式碼的最後一行必須是空白。由於 scan() 將文字載入到一個變數中,所以必須將註釋的程式碼或文字保持在合理的大小範圍內。

下面是如何使用這個方法。

comments <- scan(what="character")
Place your comments here
You can place code also:
some_data <- 1:1000
Just leave the last line blank.

rm(comments)

在 R 中使用函式來註釋多行

下面的 FormatComment 函式從剪貼簿中提取文字,並在每行開頭用 # 符號進行格式化。因此,如果你使用的文字編輯器不能自動註釋程式碼塊,你可以通過將程式碼複製到剪貼簿,並從控制檯呼叫 FormatComment 函式來獲得同樣的結果,以獲得一個註釋的版本。然後,你可以用註釋的程式碼塊替換原來的程式碼塊。

FormatComment<-function() {
    y <- as.list(readClipboard())
    spacer <- function(x) paste("#", paste("   ", collapse=""), x, sep="")
    z <- sapply(y, spacer)
    zz <- as.matrix(as.data.frame(z))
    dimnames(zz) <- list(c(rep("", nrow(zz))), c(""))
    writeClipboard(noquote(zz), format = 1)
    return(noquote(zz))
}

要嘗試使用它,只需複製任何你想包含的文字作為註釋,然後呼叫 FormatComment 函式。例如,如果你要把這段文字轉換成註釋。

This is some text
I want to insert
as a comment
in the middle of
my R script.

只需選擇整個塊並複製到剪貼簿。然後像這樣呼叫 FormatComment 函式。

FormatComment()

然後你會得到以下輸出。

#   This is some text
#   I want to insert 
#   as a comment     
#   in the middle of 
#   my R script.