我(有点)已经知道这个问题的答案了。但我认为这是一个在R用户列表中频繁询问的问题,应该有一个很好的答案。 据我所知,R中没有多行注释功能。那么,有没有人有任何好的解决方法?
虽然R中的相当多的工作通常涉及交互式会话(这使得对多行注释的需要产生怀疑),但有时候我不得不向同事和同学发送脚本,其中大部分涉及非常重要的块码。对于来自其他语言的人来说,这是一个相当自然的问题。
过去我用过引号。由于字符串支持换行符,因此使用
运行R脚本"
Here's my multiline comment.
"
a <- 10
rocknroll.lm <- lm(blah blah blah)
...
工作正常。有没有人有更好的解决方案?
答案 0 :(得分:62)
您可以在RStudio
中轻松完成此操作选择代码并点击 CTR + SHIFT + C 评论/取消注释代码。
答案 1 :(得分:47)
这会定期在邮件列表中显示,请参阅for example this recent thread on r-help。共识的答案通常是上面所示:鉴于语言没有直接支持,你必须
if (FALSE)
构造,但请注意它仍然需要完整的解析,因此必须在语法上正确答案 2 :(得分:30)
我刚刚发现的RStudio的一个巧妙的技巧是使用#'
,因为这会创建一个自我扩展的注释部分(当你从这样的一行返回到新行或者将新行插入这样一个部分时是自动评论)。
答案 3 :(得分:20)
[更新]根据评论。
# 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 more 有效的多行注释是“好事”,大多数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!"
这是图片......
答案 4 :(得分:11)
我可以想到两个选择。第一个选项是使用允许阻止注释和取消注释的编辑器(例如Eclipse)。第二种选择是使用if语句。但这只会让你“评论”正确的R语法。因此,一个好的编辑器是首选的解决方法。
if(FALSE){
#everything in this case is not executed
}
答案 5 :(得分:8)
如果发现任何语言都不适合这一点,那就太难了。
这可能是最干净的解决方法:
anything="
first comment line
second comment line
"
答案 6 :(得分:7)
除了使用过度训练的方式仅通过安装RStudio来评论多行代码,您可以使用Notepad++,因为它支持R
的语法高亮显示(选择多行) - &gt;编辑 - &gt;评论/取消评论 - &gt;切换块注释
请注意,您需要先将代码保存为.R源(以红色突出显示)
答案 7 :(得分:2)
我使用vim编辑R脚本。
让我们说R脚本是test.R,包含说&#34;第1行&#34;,&#34;第2行&#34;和&#34;第3行&#34;在3个单独的行上。
我通过输入&#34; vim test.R&#34;在Vim的命令行上打开test.R。 然后我转到我要评论的第一行,键入&#34; Control-V&#34;,向下箭头到我要评论的最后一行,键入一个大写I,即&#34; I&#34;对于insert,键入&#34;#&#34;,然后按Esc键添加&#34;#&#34;通过向下箭头选择的每一行。将文件保存在Vim中,然后输入&#34;:wq&#34;退出Vim。更改应显示在Rstudio中。
要删除Vim中的评论,请从角色顶部的第一行开始#34;#&#34;你想要删除,再次执行&#34; Control-V&#34;,然后向下箭头到你要删除的最后一行&#34;#&#34;从。然后输入&#34; dd&#34;。 &#34;#&#34;标志应该删除。
在Vim中对test.R的更改反映在Rstudio中之间有几秒钟的滞后时间。
答案 8 :(得分:0)
在RStudio中,一个简单的方法是编写注释,一旦使用CTRL + Shift + C注释你的代码行,然后使用CTRL + SHIFT + /重排你注释到多个线条便于阅读。
答案 9 :(得分:0)
在RStudio中,您可以使用井号和这样的引号:
#' This is a comment
现在,每次您按回车键时,您都不需要添加#',RStudio会自动将其代入您。
顺便说一句,为了添加参数和返回的项,为了标准化,如果您在这些注释字符串中键入@符号,RStudio会自动为您显示与这些注释参数关联的代码列表:
#' @param tracker_df Dataframe of limit names and limits
#' @param invoice_data Dataframe of invoice data
#' @return return_list List of scores for each limit and rejected invoice rows
答案 10 :(得分:-1)
在Python中,您可以在评论之前和之后使用3x单引号进行多行注释。我在R中尝试了这个,它似乎也有效。
例如
'''
This is a comment
This is a second comment
'''