在 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.