You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用purrr生成RMarkdown标题和代码块时代码未执行问题

问题原因

R Markdown的渲染流程有两个固定的先后阶段,执行逻辑不可逆:

  1. 第一阶段由knitr优先处理文档中所有原生写死的R代码块,按照配置执行代码、生成对应输出,这个阶段结束后所有原生代码块都会被替换为处理后的结果(文本、图片、表格等)
  2. 第二阶段才会把第一阶段输出的完整Markdown内容交给pandoc,转换为最终的HTML/Word/PDF等格式

你用results = "asis"动态输出的```r代码块,是在第一阶段knitr处理完所有原生代码块之后才生成的,这时候knitr已经不会再对新生成的内容做代码块解析执行了,只会把这部分内容当成普通的Markdown格式代码块传递给pandoc,最终就只会展示代码文本,不会执行里面的print('test')逻辑。

解决方法

如果要实现动态生成可执行的代码块,可以用knitr::knit_expand模板渲染的方式实现,示例写法如下:

---
title: "Untitled"
date: "10/9/2021"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
vars <- c("1", "2", "3")

r paste(knitr::knit_expand(text = c( '### {{var}}` {-}

print("test")

'), var = vars), collapse = '\n')`

这种方式是在knitr处理内联R代码的阶段就完成了模板渲染和代码块生成,会被knitr识别为可执行的代码块正常处理。

内容的提问来源于stack exchange,提问作者Dylan Russell
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:06:04