Установите рабочий каталог в интерактивном (Rstudio) и неинтерактивном (knitr) использовании в Rmarkdown - PullRequest
0 голосов
/ 05 февраля 2019

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

Так что моя структура каталогов может выглядеть примерно так:

/home/user/devel/pipelines/
  | - pipeline1/
  | - pipeline2/
  | - pipeline3/
       | - .git
       | - default_configuration.ini
       | - processing_pipeline.py
       | - report.Rmd

/cluster/lustre/projects/
  | - project1/
  | - project2/
  | - project3/
        | - data/
        | - pipeline1_results/
        | - pipeline2_results/
        | - pipeline3_results/
             | - configuration.ini
             | - results.tsv.gz
             | - results... [VARIOUS ANALYSIS PRODUCTS]
             | - [finished report will go here]....

В идеальном мире я хотел бы сохранить исходный код Rmarkdown в каталоге devel под контролем версий.Я хотел бы разработать отчет в Rstudio в интерактивном режиме на примере набора данных, используя рабочий каталог Rstudio, а не местоположение Rmd в качестве рабочего каталога, и для будущих наборов данных его нужно связать с помощью команды сценария и использовать командутекущий каталог как рабочий каталог без изменения какого-либо кода.

Я могу дополнить первую часть, добавив что-то вроде:

```{r setup}
knitr::opts_knit$set(root.dir="/cluster/lusture/projects/project3/pipeline3/")
```

Но теперь я жестко запрограммировал ноутбук для работы в определенном каталоге, а не только в любом рабочем каталогеR сеанс, так что это терпит неудачу, когда я хочу запустить на другом проекте (вероятно, вязание в пакетном режиме).

Я могу выполнить последнюю часть, выполнив мой конвейер что-то вроде:

Rscript -e 'library(rmarkdown);
opts_knit$set(root.dir = ".");
render("/path/to/source/report.Rmd")'

в каталоге анализа.Но это не работает для интерактивного сеанса.

Я бы также хотел, чтобы report.Rmd попытался загрузить configuration.ini из текущего каталога, и, если он не существует, загрузить его из исходного каталога.Но я не знаю, как получить исходный каталог в Rmd таким образом, чтобы он работал как в интерактивных сеансах, так и при вязании.

...