2016-05-11 5 views
0

Ich möchte mit R dynamische Inhalte für die Verwendung in einer Rmd-Datei erstellen.Rmarkdown Dynamischer Inhalt

Sagen wir, ich habe einen Vektor von Zeichen, chars, wie kann ich einen Dokumentabsatz von jedem Element im Vektor erzeugen?

Beachten Sie Folgendes:

```{r echo=TRUE} 
chars = c("ABC","DEF","GHI") 
for(char in chars){ print(char) } 
``` 

Die obige Produkte R-Ausgang, als Programmierausgang formatiert, aber ich will es eigentlich als Dokumentinhalt, mit anderen Worten, drei Absätze, enthält die Strings ‚ABC‘, ' DEF‘und‚GHI‘bzw.

+0

Im Grunde genommen möchten Sie die Werte von Zeichen verketten, aber mit den Trennzeichen für Zeilenumbrüche, die dazu führen, dass zwischen jedem Element ein neuer Absatz eingefügt wird. Recht? – Elin

Antwort

0

Dies ist die Lösung, die ich am Ende mit, zunächst eine Funktion erstellen:

printSection = function(content){ 
    if(any(content != '')){ 
    cat(gsub(pattern = "\n", replacement = " \n\n", x = paste(content,collapse="\n"))) 
    } 
} 

Dann verwenden Sie es wie folgt:

```{r echo=FALSE,result='asis'} 
printSection(c("ABC","DEF","GHI")) 
``` 
1

könnten Sie tun

```{r echo=TRUE, results='asis'} 
chars = c("ABC","DEF","GHI") 
for(char in chars){ cat('<p>', char, '</p>') } 
``` 
+0

Was ist, wenn das Dokument pdf/Latex ist? –

+0

Macht nichts? – lukeA

1

So etwas wie dies funktionieren würde, für was Sie wollen.

```{r, echo=FALSE} 
# Load your libraries here 

chars = c("ABC", "DEF", "HIJ") 
newstring<-paste(chars, "", collapse = "", sep = " \n") 

``` 
`r newstring` 

Rmarkdown verwendet zwei Leerzeichen am Ende einer Zeile, um eine harte Rückgabe zu erzwingen. Aber du musst die neue Zeile in deinen sep einfügen, um sicherzustellen, dass die zwei Leerzeichen am Ende der Zeile stehen.

+0

sehr ähnlich zu der Lösung, die ich verwendet habe –

0

Sie können die vorherigen Antworten kombinieren, um komplexeres HTML zu erstellen.

```{r echo=TRUE, results='asis'} 

chars = c("ABC","DEF","GHI") 

for(char in chars){ 


    cat(paste("<div class='div1'><div class='div2'>", char,"</div></div>"), sep = "") 

} 

``` 

Wenn Sie Ihre divs, um Stil, sind Sie nur style.css in der Kopfzeile:

--- 
title: "" 
author: "" 
date: "" 
output: 
    html_document: 
    css: style.css 

---