2017-08-13 29 views
1

编译knitr报告时,我想自动更改保存在光盘上的文件名(例如label-1.pdf),以包含数字字幕的自动编号例如Figure-054.pdf)。Knitr:文件名中的自动数字编号

例子:

--- 
title: "Test" 
output: pdf_document 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE, fig.path = 'Figures/', fig.cap = ' ', fig.pos = "H") 
``` 

```{r} 
summary(cars) 
``` 

```{r cars} 
plot(cars) 
``` 

```{r, fig.cap = 'pressure'} 
plot(pressure) 
``` 

```{r} 
summary(iris) 
``` 

```{r} 
plot(iris) 
plot(iris[,1] ~ iris[,5]) 
``` 

我得到4文件名

cars-1.pdf 
unnamed-chunk-2-1.pdf 
unnamed-chunk-4-1.pdf 
unnamed-chunk-4-2.pdf 

我想获得,而不是像这样(即对应编号的PDF报告):

Figure-001.pdf 
Figure-002.pdf 
Figure-003.pdf 
Figure-004.pdf 

我知道数字的名字可以用fig.processknitr选项。但我不知道如何捕捉自动图号。

回答

0

我有部分答案。

您必须相应地命名块:

--- 
title: "Test" 
output: pdf_document 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = TRUE, fig.path = 'Figures/', fig.cap = ' ', fig.pos = "H") 
``` 

```{r} 
summary(cars) 
``` 

```{r Figure1} 
plot(cars) 
``` 

```{r Figure2, fig.cap = 'pressure'} 
plot(pressure) 
``` 

```{r } 
summary(iris) 
``` 

```{r Figure3} 
plot(iris) 

``` 

```{r Figure4} 
plot(iris[,1] ~ iris[,5]) 
``` 

理想的情况下,每创建一个块图。 我还不知道如何摆脱knitr在块名称末尾添加的多余数字。

+0

谢谢@FabianCid,但这不是一个可行的解决方案。在每次插入新图形或更改图形顺序时,都必须手动重新编辑所有块标签... – Gilles

+0

我认为这是可行的,但不够健壮。为了使它更健壮,你可以使用[This Answer](http://stackoverflow.com/questions/12095113/r-knitr-possible-to-programmatically-modify-chunk-labels) – FabianCid