是否可以在 R 中进行多行注释? [复制]

Posted

技术标签:

【中文标题】是否可以在 R 中进行多行注释? [复制]【英文标题】:Is it possible to have a multi-line comments in R? [duplicate] 【发布时间】:2011-05-07 02:10:32 【问题描述】:

我发现了这个old thread(一年多以前),它解释了为什么 R 不支持多行 cmets(例如 php 的 /* 注释 */)。

我想知道这个问题在过去一年中是否已经解决,或者是否有其他替代方案? (比如notepad++和npptor,你可以标记一堆行,然后按ctrl+q将它们全部标记为cmets,其他IDE有没有类似的解决方案?)

【问题讨论】:

在 RStudio 中,您可以使用 #' 开始您的评论,以下行将被自动评论。 " bla comment bla works!" 放在""之间 【参考方案1】:

从 2.12 版开始,R 中没有多行 cmets,并且不太可能更改。在大多数环境中,您可以通过突出显示和切换评论来评论块。在 emacs 中,这是 'M-x ;'。

【讨论】:

【参考方案2】:

CTRL+SHIFT+C 在 Eclipse + StatET 和 Rstudio 中。

【讨论】:

是的!多行注释语言级别约束的最简单解决方案是捷径!【参考方案3】:
if(FALSE) 
...

阻止执行多行。但是,这些行仍然必须在语法上正确,即不能是正确意义上的 cmets。但在某些情况下仍然有帮助。

【讨论】:

感谢@caracal,如果您想跳过整个代码块,而如果您想再次处理同一块,则非常简单地注释掉它非常有用` # if(FALSE) ` 和` # ` 有什么方法可以修改这个,如果 FALSE 被更改为 TRUE,它会在大括号内运行多行代码而不是最后一行?【参考方案4】:

如果需要,您可以为多行 cmets 使用独立字符串 — 我一直认为这比 if (FALSE) 块更漂亮。该字符串将被评估然后丢弃,因此只要它不是函数中的最后一行,就不会发生任何事情。

"This function takes a value x, and does things and returns things that
 take several lines to explain"
doEverythingOften <- function(x) 
     # Non! Comment it out! We'll just do it once for now.
     "if (x %in% 1:9) 
          doTenEverythings()
     "
     doEverythingOnce()
     ...
     return(list(
         everythingDone = TRUE, 
         howOftenDone = 1
     ))

主要的限制是,当你注释掉东西时,你必须注意你的引号:如果你有一种在里面,你必须用另一种来评论;如果你在那个块中有类似“带有'postrophes的字符串”的东西,那么这种方法绝不是一个好主意。但是还有if (FALSE) 块。

这两种方法都有的另一个限制是,您只能在表达式在语法上有效的地方使用此类块 - 例如,不能注释掉列表的某些部分。

关于在哪个 IDE 中做什么:我是 Vim 用户,我发现 NERD Commenter 一个非常出色的工具,可以快速评论或取消评论多行。非常用户友好,文档齐全。

最后,在 R 提示符下(至少在 Linux 下),有可爱的 Alt-Shift-# 来注释当前行.如果您正在处理单线然后意识到您需要先做一个准备步骤,那么将一条线“搁置”非常好。

【讨论】:

Hello Esteis - 关于 alt-shift-#,它在 Windows 上不起作用。我使用“Esc”,我认为它的工作方式与您描述的类似。感谢所有建议。 在 Linux 上,插入这样的 cmets 的功能可能是由于 GNU readline 库。如果它在 R 中适用于您,那么它可能适用于许多其他应用程序,例如 bash 本身。 非常好的处理 if false 块,谢谢!【参考方案5】:

很遗憾,R 中仍然没有多行注释。

如果您的文本编辑器支持列模式,则使用它一次添加一堆#s。如果您使用 UltraEdit,Alt+c 会将您置于列模式。

【讨论】:

UltraEdit 在编辑菜单上也有一个注释添加命令:Alt+e, n 把所有东西都放在“”之间【参考方案6】:

将以下内容放入您的 ~/.Rprofile 文件中:

exclude <-  function(blah) 
    "excluded block"

现在,您可以排除如下块:

stuffiwant

exclude(
    stuffidontwant
    morestuffidontwant
)

【讨论】:

【参考方案7】:

R Studio(和 Eclipse + StatET):突出显示文本并使用 CTRL+SHIFT+C 在 Windows 中注释多行。 对于 macOS,请使用 command+SHIFT+C

【讨论】:

删除多行的 cmets 也是同样的方法。 这个解决方案没有解决 OP 的问题。这只是在每行前面放置多个单行 cmets (#)。我相信 OP 正在寻找一些东西来指定评论的开头和评论的结尾——相当于 SAS 中的以下内容:/*this can be multiple lines of comments and only 4 characters are needed to comment the entire code block*/ 它确实回答了这个问题。 OP 问道:“我想知道这是否在过去一年中得到了解决,或者是否有其他替代方案?”。这是另一种选择。

以上是关于是否可以在 R 中进行多行注释? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Perl 中输入多行注释? [复制]

R语言常用命令

是否可以在Python中创建多行注释?

[VIM] 编辑器---多行注释和取消注释及多行复制和黏贴

idea复制多行加格式

html如何单行和多行注释 ?