【问题标题】:How exactly do I comment R?我究竟如何评论 R?
【发布时间】:2021-01-07 01:28:09
【问题描述】:

如果这听起来很愚蠢,我深表歉意。我是一个尽我最大努力使我的代码可重现和易于理解的人。所以我接受了“制作有用的 cmets”和“注释每一行代码”的想法 除了像上一篇文章提到的这种混乱之外,还有其他方法可以评论代码:

这是一个使用简单的代码行和 tidyverse 模拟的可复制。对于这个例子,请假装库(包)是你见过的最复杂的代码。

# this a comment
## this is a tabbed comment
library(tidyverse) # this is an inline comment 

但是如果你把它注释掉了怎么办。

# this a comment
library(ggplot2) # this is an inline comment 
# library(tidyverse) This is commented code

现在你有一些难以理解的东西。哪个是注释,哪个是代码?

我希望语法中有一种方法可以添加另一个字符来帮助区分我的 cmets 并注释掉代码。

【问题讨论】:

  • P.S.我之所以问是因为当我在编程时搜索答案时,我发现这个问题似乎从未得到正确回答,而是被推到了其他社区:stackoverflow.com/questions/43481879/…。我希望在过去 7 年中情况发生了变化,堆栈溢出的基本问题终于可以接受了。在做了 4 年的 R 之后,我发现自己在思考这个问题。
  • 建议的答案是否能解决您的问题...?
  • 是的,自 9 月以来,我一直在忙于帮助地方选举。 @BenBolker 我非常感谢这两个答案,因为他们都回答了问题的不同方面。 Ben,您回答了如何在已经存在评论时正确评论代码。虽然杰克逊回答了更好的一般评论实践。谢谢你们的帮助。 :)

标签: r


【解决方案1】:

我同意您引用的链接Commenting R 上的许多答案。 R 中的注释以 # 开头,不支持块 cmets。

话虽如此,您可以制定自己的计划。只要您的评论行以# 开头,您就可以跟随它

您可以创建自己的架构,以便直观地分辨出注释代码与实际 cmets 的位置

如果你使用了类似的东西:

####### This is an actual comment

##<---- Comment This is also a comment ---->

######################
## Fancy comment for the next series of code lines
## More comements
## More verbose comments
######################

或喜欢上面链接评论中的 Roxygen2 cmets。 Roxygen2 Roxygen2 documentation with schema for comments 使用#' 的预定义架构:

#' roxygen2 Comments
#' roxygen2 Comments2

您可以直观地看到差异。此外,您可以搜索 ###' 以查找实际的 cmets,并搜索 # (带有空格的哈希)以查找注释代码。

【讨论】:

    【解决方案2】:

    这有获得基于意见的答案的危险,但我会尝试给出一个客观的答案。

    • 如果没有严重黑客,您将无法更改解析器以添加额外的注释字符
    • 当我用 cmets 注释掉行时,我通常会添加一组额外的注释字符:
    # library(tidyverse) ## This is commented code
    

    这样,如果我取消注释该行,注释将保持注释状态。

    • 一些编程接口(例如 Emacs)区分不同数量的哈希字符的含义/默认缩进:单哈希(#)缩进到标准注释深度,双(##)缩进到当前代码缩进级别,三个或更多 (###) 设置为行首。您可以为自己采用与此类似的约定。 (同样,任何内容在哈希被忽略后包含,因此您可以自行决定 #* ... 代表“真实”字符)
    • 有些人认为这是不好的做法,但正如 here 所讨论的,如果您使用 if (FALSE) { ... } 分隔代码块,它将不会被执行(尽管它确实需要是语法上有效的代码,这不是必需的评论材料

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-21
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      相关资源
      最近更新 更多