我(有点)已经知道这个问题的答案了.但我认为这是一个在R用户列表中频繁询问的问题,应该有一个很好的答案. 据我所知,R中没有多行注释功能.那么,有没有人有任何好的解决方法?
虽然R中的相当多的工作通常涉及交互式会话(这使得对多行注释的需要产生怀疑),但有时我不得不向同事和同学发送脚本,其中大部分涉及非常重要的代码块.对于来自其他语言的人来说,这是一个相当自然的问题.
在过去,我使用了引号.由于字符串支持换行符,因此运行R脚本
" Here's my multiline comment. " a <- 10 rocknroll.lm <- lm(blah blah blah) ...
工作良好.有没有人有更好的解决方案?
您可以在RStudio中轻松完成此操作:
选择代码并单击CTR+ SHIFT+ C 以注释/取消注释代码.
这确实定期出现在邮件列表中,例如参见r-help上最近的这个帖子.共识的答案通常是上面所示:鉴于语言没有直接的支持,你必须要么
使用具有区域到注释命令的编辑器,以及大多数高级R编辑器
使用if (FALSE)
前面提到的构造,但请注意它仍然需要完整的解析,因此必须在语法上正确
我刚刚发现的一个巧妙的技巧是使用,#'
因为这会创建一个自我扩展的注释部分(当你从这样的一行返回到新行或者将新行插入这样一个部分时它会自动注释).
[更新]根据评论.
# An empty function for Comments Comment <- function(`@Comments`) {invisible()} #### Comments #### Comment( ` # Put anything in here except back-ticks. api_idea <- function() { return TRUE } # Just to show api_idea isn't really there... print( api_idea ) `) #### #### Code. #### foo <- function() { print( "The above did not evaluate!") } foo()
[原始答案]
这是另一种方式......查看底部的图片.将代码块剪切并粘贴到RStudio中.
使用IDE 更有效的多行注释是"好事",大多数IDE或简单编辑器都没有在简单的注释块中突出显示文本; 虽然有些作者花时间确保在here-strings中解析.使用R,我们也没有多行注释或here-strings,但在RStudio中使用隐形表达式可以提供所有优点.
只要在希望用于多行注释,here-strings或未执行的注释块的部分中没有任何反引号,那么这可能是值得的.
#### Intro Notes & Comments #### invisible( expression( ` { <= put the brace here to reset the auto indenting... Base <- function() { <^~~~~~~~~~~~~~~~ Use the function as a header and nesting marker for the comments that show up in the jump-menu. --->8--- } External <- function() { If we used a function similar to: api_idea <- function() { some_api_example <- function( nested ) { stopifnot( some required check here ) } print("Cut and paste this into RStudio to see the code-chunk quick-jump structure.") return converted object } #### Code. #### ^~~~~~~~~~~~~~~~~~~~~~~~~~ <= Notice that this comment section isnt in the jump menu! Putting an apostrophe in isn't causes RStudio to parse as text and needs to be matched prior to nested structure working again. api_idea2 <- function() { } # That isn't in the jump-menu, but the one below is... api_idea3 <- function() { } } # Just to show api_idea isn't really there... print( api_idea ) }`) ) #### #### Code. #### foo <- function() { print( "The above did not evaluate and cause an error!") } foo() ## [1] "The above did not evaluate and cause an error!"
这是图片......
我可以想到两个选择.第一个选项是使用允许阻止注释和取消注释的编辑器(例如Eclipse).第二种选择是使用if语句.但这只会让你"评论"正确的R语法.因此,优秀的编辑器是首选的解决方法.
if(FALSE){ #everything in this case is not executed }
如果发现令人难以置信的是任何语言都不能满足这一要求.
这可能是最干净的解决方法:
anything=" first comment line second comment line "
除了通过安装RStudio使用过度训练的方式来评论多行代码,你可以使用Notepad ++,因为它支持R的语法高亮
(选择多行) - >编辑 - >注释/取消注释 - >切换块注释
请注意,您需要先将代码保存为.R源(以红色突出显示)