Подтвердить что ты не робот

Как изменить параметры knitr mid chunk

Привет, я хотел бы изменить параметры куска, средний кусок, не создавая новый кусок.

запуская следующий код, я ожидал бы получить два очень разных размера, но по какой-то причине это, похоже, не так.

Также второй график вообще не отображается... (он делает это, когда вы меняете его на график (2: 1000)... но в любом случае второй вывод имеет тот же размер, что и первый. both fig.width=7 Что я делаю неправильно?

Обратите внимание на важность "среднего куска": причина в том, что я хотел бы несколько раз менять параметры chunk при запуске функции для получения разных выходов разных размеров.

```{r}
sessionInfo()

opts_chunk$set(fig.width=3)

plot(1:1000)

opts_chunk$set(fig.width=10)

plot(1:1000)

```

вывод sessionInfo выглядит следующим образом:

## R version 2.15.1 (2012-06-22)
## Platform: i386-pc-mingw32/i386 (32-bit)
## 
## locale:
## [1] LC_COLLATE=English_United Kingdom.1252 
## [2] LC_CTYPE=English_United Kingdom.1252   
## [3] LC_MONETARY=English_United Kingdom.1252
## [4] LC_NUMERIC=C                           
## [5] LC_TIME=English_United Kingdom.1252    
## 
## attached base packages:
## [1] stats     graphics  grDevices datasets  utils     methods   base     
## 
## other attached packages:
## [1] knitr_0.7
## 
## loaded via a namespace (and not attached):
## [1] digest_0.5.2   evaluate_0.4.2 formatR_0.5    parser_0.0-16 
## [5] plyr_1.7.1     Rcpp_0.9.13    stringr_0.6    tools_2.15.1  

html preview

4b9b3361

Ответ 1

Два вопроса: если вы хотите сохранить обе фигуры, используйте

```{r fig.keep='all'}

По умолчанию сохраняются только уникальные сюжеты (потому что ваши два сюжета идентичны, второй снят, см. руководство пользователя knitr).

Глобальные параметры пакета активны, когда открываются следующие фрагменты:

```{r}
opts_chunk$set(fig.width=10)
```


```{r}
opts_chunk$set(fig.width=2)
# Our figure is 10 wide, not 2
plot(1:1000)
```

```{r}
# Our figure is 2 wide, not 10
opts_chunk$set(fig.width=10)
plot(1:1000)
```

Ответ 2

Это работает для меня, основываясь на намеках от Yui на github.

\documentclass{article}

\begin{document}
<<setup,echo=FALSE>>=
opts_knit$set(progress = F, verbose = F)
opts_chunk$set(comment=NA, warning=FALSE,message=FALSE,fig.width=6, echo=F)
kexpand=function(){
  cat(knit(
  text=knit_expand(text=
                     "<<yfig-{{cap}}-,fig.cap='{{cap}}',results='markup',echo=FALSE,fig.height={{figheight}},out.height={{outheight}}>>=\n
                   .q\n
                   @"
  )
))}
@

<<results='asis'>>=
library(ggplot2)
.q=qplot(1:10);cap="first caption";figheight=9;outheight=90
kexpand()
.q=qplot(1:20);cap="second caption";figheight=12;outheight=160
kexpand()

@
\end{document}

Итак, одна важная вещь - установить прогресс и многословность для F, иначе они уничтожат выход. Затем небольшая функция kexpand расширяет встроенный шаблон, который вводится как текст как часть функции. Затем вы можете определить свой сюжет как .q и ваш заголовок как кепку, и ваши высоты и т.д. Вы можете адаптировать эту функцию для управления другими параметрами. Как ни странно,.q и заголовок не должны быть параметрами для функции, вы можете просто установить их в текущей среде, и они все равно получат эту функцию. Не знаю, является ли это хорошей практикой или почему она работает, но она делает.