首页 > 解决方案 > 我可以避免评估内联 Rmarkdown `r code` 块吗?

问题描述

在演示如何使用Suggested包的小插曲中,我有这样的事情:

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

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

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

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

标签: rr-markdownknitr

解决方案


一个技巧可能是打印一个字符串或评估表达式:

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

推荐阅读