【问题标题】:Commenting in rmarkdown/knitr to prevent R evaluation在 rmarkdown/knitr 中评论以防止 R 评估
【发布时间】:2021-07-01 14:23:53
【问题描述】:

recommendation 用于在 .Rmd 文档中进行评论以使用 HTML 评论 <!-- comment here --> 是不够的。我想注释掉我的文档中包含内联评估的部分:

I haven't defined `x` yet.

<!-- So when I say that `x` is `r x` in the text, I'd like to comment it out -->

编织失败:

#   |.................................................................| 100%
#    inline R code fragments
# 
# 
# 
# 
# processing file: test.Rmd
# Quitting from lines 2-3 (test.Rmd)
# Error in eval(expr, envir, enclos) : object 'x' not found
# Calls: <Anonymous> ... in_dir -> inline_exec -> withVisible -> eval -> eval
# Execution halted

一种选择是评论每个内联部分:

I haven't defined `x` yet.

So when I say that `x` is `r #x` in the text, I'd like to comment it out

但是,例如,如果我想用几个这样的内联计算注释掉整个段落,这就会受到影响。有没有更规范的方式来做到这一点?

【问题讨论】:

  • 不完全确定我理解,但如果问题是注释掉许多内联 R 语句,也许是文本编辑器中的关键字搜索和替换?像 select paragaph 然后 Ctrl-f &gt; find "`r" replace "`r #".
  • @lmo 我的意思是,当然。我想也许这更像是一个功能请求......knitr 是否有任何理由不承认代码嵌入在评论中并跳过评​​估?
  • 这是个好问题。我刚试了一下,看看你的意思。奇怪的是,在这种情况下,cmets 被忽略了。
  • 我认为knitr 先运行所有内联 R 代码,然后再将 doc 制作成 html,因此在此阶段将忽略 html cmets。不知道如何解决它。
  • 好的,这在过去出现过:knitrrmarkdown

标签: r knitr r-markdown


【解决方案1】:

正如@NicE 所说,knitr 首先评估您的代码,特别是因为可能存在内联 R 代码评估或其他 R 变量相关文本,然后需要将其评估为降价语法。 例如,这包含在 rmarkdown 中:

Define if bold `r bold <- TRUE`  
This text is `r ifelse(bold, "**bold**", "_italic_")`.

给予:

定义是否为粗体
此文字为粗体

然后,我认为插入 cmets 而不评估它们的唯一方法是将它们嵌入到带有 eval=FALSEecho=FALSE 的块中

```{r, eval=FALSE, echo=FALSE}
So when I say that `x` is `r x` in the text, I'd like to comment it out
```

【讨论】:

    【解决方案2】:

    我发现 yaml 块可以制作更好的 cmets,

    ---
    title: "Untitled"
    author: "baptiste"
    date: "10/21/2017"
    output: html_document
    ---
    
    I haven't defined `x` yet.
    
    ---
    # here's a comment
    # ```{r}
    # x = pi
    # ```
    ---
    

    不幸的是,它似乎不适用于之前解析过的内联 r 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-29
      • 2013-07-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多