Ширина блока кода knitr, в котором есть вызов source() в блоке

У меня есть файл сценария R f2.R со следующим содержанием:

f2 <- function(Delta, delta, sigma){
  pnorm(Delta, mean=delta, sd=sigma) - pnorm(-Delta, mean=delta, sd=sigma) 
}

Теперь у меня есть следующее Rmd файл:

---
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(collapse=TRUE, tidy=TRUE, R.options=list(width=20))
```

```{r define_f1}
f1 <- function(Delta, delta, sigma){
  pnorm(Delta, mean=delta, sd=sigma) - pnorm(-Delta, mean=delta, sd=sigma) 
}
```

```{r show_f1}
f1
```

```{r source_f2}
source("f2.R")
```

```{r show_f2}
f2
```

И это вывод html:

Как видите, опция ширины определяется R.options=list(width=20) не влияет на последний кусок. Как это решить?

2 ответа

Решение

Вот решение с использованием read_chunk,

R скрипт f2.R:

# ---- source_f2 ----
f2 <- function(Delta, delta, sigma){
  pnorm(Delta, mean=delta, sd=sigma) - pnorm(-Delta, mean=delta, sd=sigma) 
}

Rmd файл:

---
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(collapse=TRUE, tidy=TRUE, tidy.opts=list(width.cutoff=20))
```

```{r define_f1}
f1 <- function(Delta, delta, sigma){
  pnorm(Delta, mean=delta, sd=sigma) - pnorm(-Delta, mean=delta, sd=sigma) 
}
```

```{r show_f1}
f1
```

```{r read_f2, include=FALSE}
knitr::read_chunk("f2.R")
```

```{r source_f2, include=FALSE}
```

```{r show_f2}
f2
```

Выход:

Обычно options(width = 20) будет работать, но не при печати функции. Вам понадобится что-то вроде cat(deparse(f2, width = 20), sep = "\n")

Другие вопросы по тегам