动态r降价页面未正确显示图表和标题

时间:2017-06-28 20:36:45

标签: r r-markdown

我有一个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")
}
```

1 个答案:

答案 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)
}
```