是否有方法包含来自不同目录的子Rmd文件

是否有方法包含来自不同目录的子Rmd文件,r,include,knitr,r-markdown,R,Include,Knitr,R 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

我有一个主标记文件,例如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能够比我在这里提出的解决方案更优雅地回答您的问题。:)

我早些时候在这里做了一次黑客攻击。这种方法也应该适合您的需求

bookstruct.Rmd文件:

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

My introduction goes here

<<insertHTML:[chapters/chapter2.Rmd]

some practice questions

<<insertHTML:[chapters/chapter3.Rmd]
## Chapter 2

This is my chapter 2.
## Chapter 3

This is my chapter 3.
章节/章节3.Rmd文件:

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

My introduction goes here

<<insertHTML:[chapters/chapter2.Rmd]

some practice questions

<<insertHTML:[chapters/chapter3.Rmd]
## Chapter 2

This is my chapter 2.
## 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"))
库(stringi)

子渲染相关?谢谢相关的,可能是这样,但从我所能说的来看不直接适用。我们选择不使用乳胶…我试图用knit 1.12.3重现问题,但无法重现。文档与子文件夹
Rmd
@chinsoo12中的
first.Rmd
second.Rmd
配合很好:谢谢您的努力。在尝试您的解决方案之前,我将尝试将所有Rmd放在一个目录中,并在源渲染时更改为该目录。如果这不起作用,那么我将尝试应用您的解决方案。我的问题的背后是整理我们的主要项目目录。再次感谢。同样的目录想法似乎也适用;看见