我可以避免评估内联Rmarkdown`r code`块吗?

问题描述 投票:1回答:2

在演示如何使用Suggested包的小插图中,我有这样的内容:

if (suggested_package_not_available) {
  knitr::opts_chunk$set(eval = FALSE)
}

这意味着小插图仍在运行,等等,尽管Suggested程序包不可用。它仅显示代码,而不显示结果。

我可以对内联R代码(`r code`)做类似的事情吗?

也许是使用正则表达式(a la `r [^`]+`)的钩子在内联代码周围添加两个反引号,以便显示内联代码而不是对其进行评估(这通常会导致错误,因为不再对块进行评估)?

r r-markdown knitr
2个回答
2
投票

技巧可能是打印字符串或计算表达式:

check_code <- function(expr, available){
  if(available){
    eval(parse(text = expr))
  } else {
    expr
  }
}
check_code("1+1", TRUE)
check_code("1+1", FALSE)

0
投票

看起来好像前后有两次反引号,以及在`r可以工作之后才打破界限。

[yihui网站上的更详尽的解释:https://yihui.org/knitr/faq/(#7)

对于内联R代码,您可以使用功能knitr :: inline_expr()(在knitr> = v1.8中可用)。如果您正在编写R Markdown文档,则可以使用一个技巧:在`r后立即换行(其后没有空格),然后将整个内联表达式包装在一对双反引号中,例如

这将在输出中显示逐字内联R表达式`r 1+1`

© www.soinside.com 2019 - 2024. All rights reserved.