问题描述
我想结合 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])
```