2016-05-11 118 views
0

我想使用R來生成用於Rmd文件的動態內容。Rmarkdown動態內容

可以說我有一個字符向量,chars,我該如何從向量中的每個項目生成一個文檔段落?

考慮以下幾點:

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

以上產生R輸出,格式爲編程輸出,但其實我是想它作爲文檔內容,換言之,三段,包含字符串「ABC」,' DEF」和‘分別

+0

所以基本上你想要連接字符的值,但是與換行符分隔符會導致它在每個元素之間插入一個新的段落。對? – Elin

回答

0

這是我最終使用的解決方案,首先創建一個功能:

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

然後按如下方式使用它:

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

GHI’你可以做

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

如果文件是pdf/latex,該怎麼辦? –

+0

無所謂? – lukeA

1

像這樣的事情會爲你想要的工作。

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

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

``` 
`r newstring` 

Rmarkdown在行的末尾使用兩個空格來強制返回。但是你需要將新行放在你的sep中,以確保這兩個空格位於行尾。

+0

與我最終使用的解決方案非常相似 –

0

您可以結合以前的答案來創建更復雜的HTML。

```{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 = "") 

} 

``` 

如果你想風格你div的,只包括你style.css在標題:

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

---