能否用变量替换knitr代码块选项中的TRUE/FALSE值?
当然可以这么做!
你这个思路完全可行,而且确实比把代码包在if()语句里要简洁不少——毕竟直接控制代码块的eval选项,逻辑更直观,代码也更干净。
举个具体的示例,完全贴合你想要的写法:
# 先定义控制代码块执行的逻辑变量 boolean <- is.character("这是一个字符串") # 这里会返回TRUE
然后直接在后续代码块的选项里使用这个变量:
# 当boolean为TRUE时,这段代码会被执行 cat("这段代码成功运行啦!")
如果把boolean改成is.character(123)(返回FALSE),后面的代码块就会直接跳过,不会执行。
几个小注意事项:
- 确保你的
boolean变量是在前面已经执行过的代码块里定义的,不然knitr找不到这个变量会报错; - 变量必须是严格的逻辑值(
TRUE/FALSE),别用0/1或者其他类型的值,不然knitr可能无法正确解析eval选项; - 如果是在复杂的R Markdown文档里,注意环境的问题——只要变量是在全局环境或者当前文档的代码环境里,就可以正常调用。
内容的提问来源于stack exchange,提问作者Dries
相关产品推荐
相关产品推荐

