我有一个r markdown文件的代码。第2页是静态的,将显示SUBJECt 1,然后显示(4)。
然后我想循环并再创建3个显示
的页面主题2 img of plot 4
主题3 img of plot 4
主题4 img of plot 4
因此,动态创建标题为SUBJECT 2 3和4的页面,但是当您运行代码时,标题会显示“#SUBJECT 3”和“#SUBJECT 4”,并且图表不会显示。你能帮忙吗?
---
output:
pdf_document:
toc: yes
keep_tex: TRUE
setspace: singlespacing
geometry: margin=1.1cm
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE , comment = NA, message= FALSE, warning = FALSE)
```
```{r one, include= FALSE}
ta = data.frame(group = c("A,h","b, j "),`10-20`= c(1,"-"),`34-44`= c("-","-") ,check.names = FALSE)
ta
```
\newpage
# SUBJECT 1
```{r echo= FALSE, comment = FALSE, message= FALSE, warning = FALSE, results='asis'}
plot(4)
```
\newpage
```{r echo= FALSE, comment = FALSE, message= FALSE, warning = FALSE, results='asis'}
for(i in 2:4){
cat(paste0("# SUBJECT ",i) )
plot(4)
cat("\\newpage")
}
```
答案 0 :(得分:1)
以下代码可以使用(稍加修改,我稍后会解释)。我设置了代码块选项,
fig.keep='all'
和fig.align='left'
,使用第一个选项是保存您在代码块中绘制的所有图片,第二个选项是告诉knitr
使用某些命令来包装图表所以他们不会搞砸其他降价代码。图片是左对齐,中对还是右对齐除了图片的位置之外不会产生差异,但您需要设置选项。
您可能会注意到,在代码中,我将plot(4)
修改为plot(i)
。因为在我的实验中,plot(4)
只会给出两个图而不是三个图。这不是knitr
问题,它与evaluate::evaluate
所依赖的knitr
有关。例如,如果您运行类似
r <- 'for (i in 2:4){cat(paste0("\\newpage\n # SUBJECT ",i, "\n")); plot(4)}'
rr <- evaluate::evaluate(r)
然后rr
只会包含两个图。我想这是因为你原来的例子中的所有情节都是一样的。因为在你的实际使用中,情节不应该是相同的(我是对的吗?),所以我想这没关系。
---
output:
pdf_document:
toc: yes
setspace: singlespacing
geometry: margin=1.1cm
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE , comment = NA, message= FALSE, warning = FALSE)
```
```{r one, include= FALSE}
ta = data.frame(group = c("A,h","b, j "),`10-20`= c(1,"-"),`34-44`= c("-","-") ,check.names = FALSE)
ta
```
\newpage
# SUBJECT 1
```{r echo= FALSE, comment = FALSE, message= FALSE, warning = FALSE, results='asis'}
plot(4)
```
```{r echo= FALSE, comment = FALSE, message= FALSE, warning = FALSE, results='asis', fig.keep='all', fig.align='left'}
for (i in 2:4){
cat(paste0("\\newpage\n # SUBJECT ",i, "\n"))
plot(i)
}
```