我(某种程度上)已经知道这个问题的答案。但我认为这是 R 用户列表中经常被问到的问题,应该有一个可靠的好答案。 据我所知,R 中没有多行注释功能。那么,有人有什么好的解决方法吗?

虽然 R 中的相当多的工作通常涉及交互式会话(这让人怀疑是否需要多行注释),但有时我不得不向同事和同学发送脚本,其中大部分涉及重要的代码块。对于来自其他语言的人来说,这是一个相当自然的问题。

过去我使用过引号。由于字符串支持换行符,因此运行 R 脚本

"
Here's my multiline comment.

"
a <- 10
rocknroll.lm <- lm(blah blah blah)
 ...

工作正常。有人有更好的解决方案吗?

有帮助吗?

解决方案

这确实经常出现在邮件列表中,请参阅 例如 r-help 上最近的这个帖子. 。一致的答案通常是上面所示的:鉴于该语言没有直接支持,您必须

  • 使用具有区域注释命令的编辑器,并且大多数高级 R 编辑器都可以
  • 使用 if (FALSE) 之前建议的结构,但请注意,它仍然需要完整的解析,因此语法必须正确

其他提示

可以在容易地做到这一点 RStudio

选择的代码并点击 CTR + SHIFT + C 评论/取消注释代码。

有关RStudio一个绝招我刚刚发现是使用#',因为这将创建一个自膨式注释部分(当你从这样的行返回新行或插入新行成这样的部分会自动发表评论)

[更新]基于评价。

# 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或简单的编辑器不具有内简单的注释退房手续块文本的高亮显示;尽管一些学者所花费的时间,以确保此串中解析。其中r我们没有多行注释或在这里,无论是字符串,但在使用RStudio无形表达式给出了所有美好的事物。

只要有不是期望被用于多行注释,这里串,或不执行注释块则部分中的任何反引号,这可能是一些值得-而

#### 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!"

和这里的PIC ...

“结构化评论”

我能想到的两个选项。第一种选择是使用编辑器,允许以块注释和取消注释(例如Eclipse的)。第二个选择是使用if语句。但是,这只会让你“注释”正确的[R语法。因此,一个好的编辑器是首选的解决方法。

if(FALSE){
     #everything in this case is not executed

}

如果觉得不可思议的是任何语言也不会满足于此。

这大概是最清洁的解决方法:

anything="
first comment line
second comment line
"

除了使用仅通过安装 RStudio 来注释多行代码的过分方式之外,您还可以使用 记事本++ 因为它支持 R 的语法突出显示

(选择多行)->编辑->注释/取消注释->切换块注释

请注意,您需要首先将代码另存为 .R 源(以红色突出显示)

Note that you need to save the code as a .R source first (highlighted in red)

我使用vim编辑将R脚本。

假设将R脚本是test.R,含有说上3个单独的行 “1号线”, “线路2” 和 “3线”。

我通过键入“VIM test.R”打开test.R用Vim在命令行上。 然后我去了1号线我想注释掉,键入“control-V”,向下箭头到最后一行我想注释掉,输入大写我,即“我”的插入,输入“#”,然后按下Esc键,“#”添加到我的arrowing下选择每行。保存在Vim的文件,然后通过键入退出Vim“:WQ”。变化应在Rstudio显示出来。

要删除的Vim的意见,开始在在“#”字符要删除顶部的第一线,再做“控制-V”,并用箭头指向最后一行要删除一个“# “从。然后输入“DD”。 “#” 的标志应被删除。

有滞后时间秒价值时在Vim中改变test.R反映在Rstudio之间。

RStudio 一个简单的方法来做到这一点是写你的评论,一旦你已经使用CTRL + Shift + C键进行评论你的代码行,然后使用CTRL + SHIFT + /回流您多行为了便于阅读评论。

在Python中你与之前和之后的评论3倍单引号多行注释。我R中尝试这样做,它似乎也工作。

例如

'''
This is a comment
This is a second comment
'''
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top