【问题标题】:R: Comment out block of code [duplicate]R:注释掉代码块[重复]
【发布时间】:2012-02-24 20:00:52
【问题描述】:

可能重复:
R: Multiline Comment Workarounds?

我想在 R 中注释掉几行代码。有什么方法可以做到这一点,而不必在每行之前加上 # ——有点像 SAS 中的/* blocked out code */

【问题讨论】:

  • R 不做多行 cmets。看到类似的线程:stackoverflow.com/questions/4131338/…
  • 我最好的建议是编写一个宏(或插件,以防你使用 Sublime Text 2 之类的东西)并分配一个键绑定,这样一旦你选择的文本(即 cmets)在前面得到一个点击相应的键绑定。
  • 如果你还没有尝试过 Rstudio,我肯定会推荐它。我认为您可以轻松地评论/取消评论几行。
  • Notepad++ 将 R 识别为一种语言并允许对代码进行块注释。
  • Notepad++ 中的 Ctrl+Q,RStudio 中的 Ctrl+Shift+C

标签: r comments


【解决方案1】:

大多数编辑器都采用某种捷径来注释代码块。默认编辑器使用命令或控制和单引号之类的东西来注释掉选定的代码行。在 RStudio 中,它是 CommandControl+/。检查您的编辑器。

它仍在逐行注释,但他们也取消注释选定的行。对于 Mac RGUI,它是 command-option ' (我想象 windows 是控制选项)。对于 Rstudio,它只是 CommandControl + Shift + C 再次。

随着编辑器的更新和不同的软件成为最流行的 R 编辑器,这些快捷方式可能会随着时间而改变。您必须查找您拥有的任何软件。

【讨论】:

  • 是的,这是一个超级方便的功能。在 Emacs 中,只需突出显示要注释掉的区域,然后键入 C-x r t 后跟要添加的字符(类似于 "## ")。要为 SO 缩进代码块,请执行相同操作,但将最后三个字符替换为四个空格!
  • 在 Emacs 中你也可以使用M-x comment-region。不知道C-x r,谢谢!
  • CTRL+SHIFT+C 切换 eclipse/StatET 下选择的注释。
  • R Studio 在 OSX 中是 Cmd+Shift+C
  • 在 Windows 中,RStudio 中的命令是 Ctrl + Shift + C
【解决方案2】:

我在talkstats.com 的帖子94、101 和103 中处理过这个问题:Share Your Code。正如其他人所说,Rstudio 可能是更好的选择。我将这些函数存储在我的 .Rprofile 中并实际使用它们,但会自动快速屏蔽代码行。

没有您希望的那么好,但可能是一种方法。

【讨论】:

    【解决方案3】:

    将其包装在一个未使用的函数中:

    .f = function() {
    
    ## unwanted code here:
    
    }
    

    【讨论】:

      【解决方案4】:

      我使用 RStudio 或 Emacs,并且总是使用可用于注释区域的编辑器快捷方式。如果这不可能,那么您可以使用 Paul 的答案,但这仅适用于您的代码在语法上正确的情况。

      这是我想出的另一种肮脏方式,将其包装在scan() 中并删除结果。它确实将评论存储在内存中一小段时间,因此它可能不适用于非常大的 cmets。最好的办法是在每一行前面加上# 符号(可能带有编辑器快捷方式)。

      foo <- scan(what="character")
      These are comments
      These are still comments
      Can also be code:
      x <- 1:10
      One line must be blank
      
      rm(foo)
      

      【讨论】:

      • 更脏的变化。定义"#" &lt;- function() invisible(scan(what = character())),然后以"#"() 开始您的评论块。
      • 前面的答案应该真的有反引号而不是引号(尽管它在任何一种情况下都有效),但如果我能弄清楚如何将反引号放入注释中的代码块中,我会很高兴。
      • Richie,不错的建议,但斜杠会生成错误消息:错误:意外'/' in: "#(# 开始评论http://"
      【解决方案5】:

      一种块注释使用if语句:

      if(FALSE) {
        all your code
      }
      

      它有效,但我几乎总是使用我的编辑器(RStudio、Kate、Kwrite)的块评论选项。

      【讨论】:

      • 现在学习 R 和圣牛。
      • 这不会对任何检查语法的工具造成问题吗?
      • 相当非正统,但是,嘿,只要它有效。 :)
      猜你喜欢
      • 1970-01-01
      • 2016-04-25
      • 2015-09-30
      • 1970-01-01
      • 2017-02-27
      • 2011-08-07
      • 1970-01-01
      • 2014-02-15
      • 2010-10-15
      相关资源
      最近更新 更多