Ширина блока кода 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")