Rmarkdown 动态内容

Rmarkdown Dynamic Content

我想使用 R 生成动态内容以用于 Rmd 文件。

假设我有一个字符向量,chars,我如何从向量中的每个项目生成一个文档段落?

考虑以下几点:

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

上面生成R输出,格式为编程输出,但我实际上想要它作为文档内容,换句话说,三段,包含字符串'ABC'、'DEF'和'GHI'分别

你可以

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

像这样的东西可以满足您的需求。

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

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

```
`r newstring`

Rmarkdown 在行尾使用两个空格来强制执行 return。但是您需要将新行放在您的 sep 中,以实际确保两个空格位于该行的末尾。

您可以结合前面的答案来创建更复杂的 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 包含在 header 中:

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

---

这是我最终使用的解决方案,首先创建一个函数:

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