如何使用 Knit 将 .Rmd 文件中的每个块提取到多个 .R 文件

Bin*_*ian 5 r knitr

我们可以将 .Rmd 文件 purl 为 .R 文件,但是如何将 .Rmd 文件中的每个块 purl 为单独的由块标签命名的 .R 文件。

Tho*_*mas 3

假设您有以下名为“test.Rmd”的 .Rmd 文档:

This is a test.

```{r chunk1}
1:4
```

This is a further test.

```{r chunk2}
5:6
```
Run Code Online (Sandbox Code Playgroud)

如果purl-ed,您将得到以下结果:

## ----chunk1--------------------------------------------------------------
1:4


## ----chunk2--------------------------------------------------------------
5:6
Run Code Online (Sandbox Code Playgroud)

您可以首先使用purl,使用该read_chunk函数,然后将每个块写入单独的文件,从而将其放入单独的文件中:

library("knitr")
p <- purl("test.Rmd")
read_chunk(p)
chunks <- knitr:::knit_code$get()
invisible(mapply(function(chunk, name) {
    writeLines(c(paste0("## ----",name,"----"), chunk), paste0("chunk-",name,".R"))
}, chunks, names(chunks)))
unlink(p) # delete the original purl script
knitr:::knit_code$restore() # remove chunks from current knitr session
Run Code Online (Sandbox Code Playgroud)

这会为每个名为"chunk-chunk1.R""chunk-chunk2.R"等的块生成一个文件,仅包含该块的代码。