2016-04-11 5 views
3

Ich habe eine Master-Abschlags-Datei, zB Parent.Rmd, und eine Reihe von Kindern Dokumenten werden mit einbezogen ist:Gibt es eine Möglichkeit Kind Rmd Dateien aus einem anderen Verzeichnis

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

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

Es scheint, dass ich sollte die Lage zu tun:

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

die gleiche Datei aus einem Unterverzeichnis namens ‚Rmd‘ zu ziehen, aber knitr kann die Verbindung nicht öffnen.

Ich habe auch zu nutzen versucht:

`knitr::opts_chunk$set(child.path='Rmd')` 

aber der Code Chunk ignoriert. Gibt es eine andere Art und Weise? Meine rmarkdown Version ist 0.9.5 und knitr ist 1.12

+0

verwandt? http://stackoverflow.com/q/26489328/471093 – baptiste

+0

Danke. Verwandt, wahrscheinlich so, aber nicht direkt anwendbar von dem, was ich sagen kann. Wir haben uns entschieden, LaTeX nicht zu verwenden ... – Alan

+0

Ich habe versucht, das Problem mit Strick 1.12.3 zu reproduzieren und kann es nicht reproduzieren. [This] (http://www.r-fiddle.org/#/fiddle?id=1lWeNXEg) Dokument funktioniert gut mit 'first.Rmd' und' second.Rmd' im Unterordner 'rmd'. –

Antwort

0

hoffentlich @Yihui der Lage, Ihre Frage eleganter als meine vorgeschlagene Lösung hier zu beantworten. :)

ich habe früher einen Hack hier Include HTML files in R Markdown file?. Und sollte das Verfahren für Ihre Anforderungen arbeiten als auch

bookstruct.Rmd Datei:

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

My introduction goes here 

<<insertHTML:[chapters/chapter2.Rmd] 

some practice questions 

<<insertHTML:[chapters/chapter3.Rmd] 

Kapitel/chapter2.Rmd Datei:

## Chapter 2 

This is my chapter 2. 

Kapitel/chapter3.Rmd Datei:

## Chapter 3 

This is my chapter 3. 

Führen Sie in der R-Konsole Folgendes aus:

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?

+0

@ chinsoo12: danke für deine Mühe. Bevor ich Ihre Lösung versuche, werde ich versuchen, alle meine Rmds in ein einziges Verzeichnis zu legen und beim Quell-Rendering in dieses Verzeichnis zu wechseln. Wenn das nicht funktioniert, werde ich versuchen, Ihre Lösung anzuwenden. Was hinter meiner Frage stand, ist, unser Hauptprojektverzeichnis zu leeren. Danke noch einmal. – Alan

+0

Die gleiche Verzeichnisidee scheint zu funktionieren; Siehe https://stackoverflow.com/questions/25824795/how-to-combine-two-rarmdown-rmd-files-into-a-single-output – jsta

Verwandte Themen