gpt4 book ai didi

r - 运行 knit 到 .Rmd 输出时, block 无效

转载 作者:行者123 更新时间:2023-12-04 22:55:43 25 4
gpt4 key购买 nike

问题

尝试 knit 时.Rmd 包含 read_chunk来自 purl 的行脚本到父 .Rmd 中, block 不完整,仅形成代码块。我希望能够 knit输出文件正常。

代码

main.Rmd

---
output: html_document
---

```{r, include=FALSE}
knitr::read_chunk("script_chunk.R")
```

### Print sessionInfo()

```{r, ref.label='script_chunk', eval=FALSE}
```

script_chunk.R
# ---- script_chunk
sessionInfo()

针织

当我用 knit("main.Rmd", "output.Rmd") 处理它时生成以下文件:
---
output: html_document
---



### Print sessionInfo()


```r
sessionInfo()
```

但是,该 block 的所需输出是:
```{r script_chunk}
sessionInfo()
```

当我 knit output.Rmd 目前,我只得到一个未评估的代码块,因为该 block 缺少花括号(最好是 block 名称)。

enter image description here

解决方法

我可以使用 readLines实现我所追求的,例如:
```{r, results='asis', collapse=TRUE, echo=FALSE}
cat("```{r script_chunk}\n")
cat(paste(readLines("script_chunk.R"), "\n", collapse = ""))
cat("```\n")
```

有没有更优雅的方法来做到这一点?

最佳答案

有一个更优雅的解决方案:

# main.Rmd
---
output: html_document
---

### Print sessionInfo()

```{r, results="asis", echo = FALSE}
chunk_lines <- knitr::spin(text = readLines("script_chunk.R"), knit = FALSE)
cat(chunk_lines, sep = "\n")
```

但请记住,您的输出为 knitr关心,是普通的 Markdown。 knitr只能 output to certain formats :LaTeX、Sweave、HTML、Markdown 或 Jekyll。虽然您的输出文件有 .Rmd扩展名,它的内容是普通的 Markdown,因为这是 R Markdown 文件的默认值。

因此请注意,您想要在输出中的所有代码块都必须写为动态输出。这可能会给您留下 main.Rmd 中的混淆代码.

关于r - 运行 knit 到 .Rmd 输出时, block 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47916422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com