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

如何在knitr/RMarkdown中展示文件指定代码行?

问题描述

我有一个script.R文件,内容如下:

x <- data.frame(
    a = 1:10,
    b = 11:20
)

y <- rnorm(100)

需要在RMarkdown文档的单个代码块中仅展示与x相关的前4行代码。

已尝试的方法
  • 使用knitr选项{r, file = "script.R"}会引入整个文件,不符合需求;
  • {r, code = xfun::read_all("script.R")[1:4]}可截取内容,但会以带行号的R向量形式打印,而非源代码格式;
  • 以下临时方法可行,但步骤繁琐:
```{r, results="asis"}
readLines("script.R")[1:4] |>
  c("```{r}", content=_, "```") |>
  paste(collapse = "\n") |>
  cat()
- 使用`read_chunk`方法可行,但需要两个代码块,不符合单个代码块的要求:
```r
```{r, include=FALSE, cache=FALSE}
knitr::read_chunk('script.R', labels="chunk-a", from=1, to=4)
# 简洁解决方案
只需单个代码块,通过`code`参数传入截取的行内容即可:
```r
```{r, code = readLines("script.R")[1:4]}
该方法中,`readLines("script.R")[1:4]`读取文件前4行并返回字符向量,`code`参数会将这个向量直接作为代码内容渲染,完美呈现源代码格式,无需额外处理。

若需兼容更多场景(如特殊编码),也可使用`xfun::read_lines`替代`readLines`:
```r
```{r, code = xfun::read_lines("script.R")[1:4]}
内容的提问来源于stack exchange,提问作者Migwell
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:35:06