如何使用乳胶在 rmakdown 中循环?

问题描述

我想结合 rmarkdown 和 latex 并循环遍历数据集列。有什么方法可以处理下面的代码

```{r}

for (i in 1:10){
  
\begin{itemize}

\item i

\end{itemize}

}
```

解决方法

您可以使用 pgffor 包来创建循环:

---
output:
  pdf_document: 
    keep_tex: true
header-includes:
- \usepackage{pgffor}
---

\begin{itemize}
\foreach \x in {1,...,10}{
  \item \x
}
\end{itemize}
,

一种解决方法

```{r,echo=FALSE,results='asis'}
dfex <- data.frame(x=letters[1:10],y=LETTERS[1:10])

cat("\\begin{itemize}")
for(i in 1:nrow(dfex)){
  cat(paste("\\item",dfex[i,1]))  
}
cat("\\end{itemize}")
```

重要的是要注意:results='asis'cat 确保它是作为干净的乳胶输出而不是 R 输出生成的。需要 double \\ 来明确说明它是我们想要的反斜杠而不是一些特殊字符,例如\i

无需 result='asis' 使用 (knitr::asis_output) 的示例

```{r,echo=FALSE}
latexItemize <- function(items){
  knitr::asis_output(paste0(
    "\\begin{itemize}",paste("\\item",items,collapse=" "),"\\end{itemize}"
  ))

}
```


```{r,echo=FALSE}
latexItemize(dfex[,2])
```