gpt4 book ai didi

r - 有没有办法包含来自不同目录的子 Rmd 文件

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

我有一个主 Markdown 文件,例如 Parent.Rmd,以及一些包含在以下文件中的子文档:

```{r child="introduction.Rmd", echo=FALSE}
```

```{r child="chapter2.Rmd", echo=FALSE}
```

看来我应该能够做到:
```{r child="Rmd/introduction.Rmd", echo=FALSE}
```

从名为“Rmd”的子目录中提取相同的文件,但 knitr 无法打开连接。

我也尝试使用:
`knitr::opts_chunk$set(child.path='Rmd')`

但是块代码忽略了它。还有其他方法吗?我的 rmarkdown 版本是 0.9.5,knitr 是 1.12

最佳答案

希望@Yihui 能够比我在这里提出的解决方案更优雅地回答您的问题。 :)

我早些时候在这里做了一个黑客Include HTML files in R Markdown file? .该方法也应满足您的要求

bookstruct.Rmd 文件:

---
title: "BookTitle"
output: html_document
---

My introduction goes here

<<insertHTML:[chapters/chapter2.Rmd]

some practice questions

<<insertHTML:[chapters/chapter3.Rmd]

章节/chapter2.Rmd 文件:
## Chapter 2

This is my chapter 2.

章节/chapter3.Rmd 文件:
## Chapter 3

This is my chapter 3.

在 R 控制台中,运行以下命令:
library(stringi)

subRender <- function(mdfile, flist) {
#replace <<insertHTML:flist with actual html code
#but without beginning white space
rmdlines <- readLines(mdfile)
toSubcode <- paste0("<<insertHTML:[",flist,"]")
locations <- sapply(toSubcode, function(xs) which(stri_detect_fixed(rmdlines, xs)))
subfiles <- lapply(flist, function(f) stri_trim(readLines(f)))
strlens <- sapply(subfiles,length)

#render html doc
newRmdfile <- tempfile("temp", getwd(), ".Rmd")

#insert flist at specified locations
#idea from @Marek in [2]
alllines <- c(rmdlines[-locations], unlist(subfiles))
ind <- c( (1:length(rmdlines))[-locations],
unlist(lapply(1:length(locations), function(n) locations[n] + seq(0, 1, len=strlens[n])/1.1 )) )
sortedlines <- alllines[order(ind)]

#render html
write(sortedlines, newRmdfile)
rmarkdown::render(newRmdfile, "html_document")
shell(gsub(".Rmd",".html",basename(newRmdfile),fixed=T))
} #end subRender

subRender(mdfile="bookstruct.Rmd",
flist=list("chapters/chapter2.Rmd", "chapters/chapter3.Rmd"))

[2] How to insert elements into a vector?

关于r - 有没有办法包含来自不同目录的子 Rmd 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36558273/

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