Запустите RMarkdown с аргументами в командной строке
Я пытаюсь запустить файл Rmarkdown (myfile.Rmd
) из терминала командной строки. Этот файл должен принимать аргумент для работы. Мы можем использовать этот простой файл в качестве примера:
---
title: "Simple example"
output:
pdf_document: default
---
```{r read_arg, include=FALSE}
args = commandArgs(TRUE)
VAR = args[1]
```
```{r show_var}
VAR
```
Итак, прежде всего, возможно ли запустить файл Rmarkdown, прочитав аргументы, как это сделано для Rscripts? Я имею в виду, не читая входные файлы, как описано в этом вопросе.
Если так, как это можно сделать? Я надеюсь, что часть работы здесь, используемая для запуска файла Rmarkdown, сработала для меня, но это не из-за аргумента. Я пытаюсь запустить что-то вроде:
Rscript -e "rmarkdown::render('myfile.Rmd myarg')"
РЕДАКТИРОВАТЬ: Но это дает следующую ошибку:
Ошибка в tools::file_path_as_absolute(входная): файл 'myfile.Rmd_myarg' не существует Вызовы: -> setwd -> dirname -> Además: Предупреждающие сообщения: 1: в normalizePath(path, winslash = winslash, mustWork = mustWork): path[1]="myfile.Rmd myarg": не существует. fichero или el Directorio 2: в normalizePath(path, winslash = winslash, mustWork = mustWork): path[1]="myfile.Rmd_myarg": не существует. o el Directorio Ejecución interrumpida
Есть идеи? Спасибо!
2 ответа
Добавление myarg
Объект в качестве параметра это путь:
Rscript -e "rmarkdown::render('example.Rmd',params=list(args = myarg))
А затем добавьте параметр к вашему Rmd
файл:
---
title: "Simple example"
output:
pdf_document: default
params:
arg: myarg
---
Документация по параметризованным отчетам здесь: https://rmarkdown.rstudio.com/developer_parameterized_reports.html
Просто поясню для тех, кто запутался, как я:
Принятый ответ подразумевает, что значение параметра в заголовке YAML и значение параметра в командной строке должны совпадать. Они не обязательно должны совпадать. Что бы это ни было, вам не нужно добавлять его в заголовок YAML.
Это противоречит цели создания отчета из командной строки. Каждый раз, когда вы захотите изменить значение , вам также потребуется открыть .Rmd и изменить его в заголовке YAML.
Достаточно просто инициализировать параметр в заголовке, например, с помощью пустой строки или NA. Например:
---
title: "Simple example"
output:
pdf_document: default
params:
args: ''
---
```{r read_arg, include=FALSE}
args <- params$args
VAR <- args[1]
```
```{r show_var}
VAR
```
Аргументы перешли к
Rscript -e "rmarkdown::render('example.Rmd’, param=list(args=myarg))"
Я бы еще отметил, что