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 剪贴板或交互式会话中也会有相同行为。此函数适用于复制来的文字行;粘贴结果后请仔细检查,尤其是原始代码含有缩进或续行语法时。日常编辑代码时,使用编辑器的注释切换命令通常更容易撤销,也较不容易破坏格式。