我目前正在使用 rmarkdown 编写报告,因此我想在 r 代码块中创建部分。我发现这在 cat() 和 results="asis"的帮助下是可能的。我对这个解决方案的问题是,我的 R 代码结果和代码没有像往常一样正确显示。
例如
---
title: "test"
output: pdf_document
---
```{r, results='asis'}
for (i in 1:10) {
cat("\\section{Part:", i, "}")
summary(X)
$\alpha = `r X[1,i]`$
}
```
几乎可以解决问题,但这里仍然存在两个问题:
是否有人知道其中一些问题的解决方案,或者是否有一种解决方法可以在循环中创建部分并在本部分中包含 R 代码、R 输出和 LaTeX 公式?或者至少是其中之一?
我非常感谢各种建议
最佳答案
您可以在不依赖代码块的情况下进行内联之后的操作。
作为一个最小的例子。
---
title: "test"
output: pdf_document
---
```{r sect1_prep, include=FALSE}
i <- 1
```
\section{`r paste0("Part: ", i)`}
```{r sect1_body}
summary(mtcars[, i])
```
$\alpha = `r mtcars[1, i]`$
```{r sect2_prep, include=FALSE}
i <- i + 1
```
\section{`r paste0("Part: ", i)`}
```{r sect2_body}
summary(mtcars[, i])
```
$\alpha = `r mtcars[1, i]`$
生产...
如果你真的想拥有一个型材厂,你可以考虑
pander
.---
title: "test"
output: pdf_document
---
```{r setup, include=FALSE}
library(pander)
panderOptions('knitr.auto.asis', FALSE)
```
```{r, results='asis', echo=FALSE}
empty <- lapply(1:10, function(x) {
pandoc.header(paste0("Part: ", x), level = 2)
pander(summary(mtcars[, x]))
pander(paste0("$\\alpha = ", mtcars[1, x], "$\n"))
})
```
产生...
删除汇总表格式示例
---
title: "test"
output: pdf_document
---
```{r setup, include=FALSE}
library(pander)
panderOptions('knitr.auto.asis', FALSE)
```
```{r, results='asis', echo=FALSE}
content <- lapply(1:10, function(x) {
head <- pandoc.header.return(paste0("Part: ", x), level = 2)
body1 <- pandoc.verbatim.return(attr(summary(mtcars[, x]), "names"))
body2 <- pandoc.verbatim.return(summary(mtcars[, x]))
eqn <- pander_return(paste0("$\\alpha = ", mtcars[1, x], "$"))
return(list(head = head, body1 = body1, body2 = body2, eqn = eqn))
})
writeLines(unlist(content), sep = "\n\n")
```
关于r - 如何在 R-Markdown 的 R block 中使用 LaTeX 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47463861/