Отладка файла RMarkdown из командной строки - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь взять файл Rmarkdown, написанный кем-то другим, и запустить его из командной строки (не RStudio), используя

Rscript -e 'library(rmarkdown); rmarkdown::render("input.Rmd")'

Выполнение продолжается при выводе на консоль таких вещей, как эта, при обработке каждого чанка:

label: readDataFiles (with options) 
List of 1
 $ error: logi TRUE

  |..............                                                   |  22%
  ordinary text without R code

Тем не менее, блок завершается ошибкой и выполнение останавливается. Я считаю, что это потому, что путь к функции не является допустимым. Поэтому я попытался добавить новый блок, отображающий значение этого пути в моей консоли :

``` {r thePath, eval=True}
path
```

Однако я вижу только вывод

label: thePath (with options) 
List of 1
 $ eval: logi TRUE

Значение переменной path не отображается. И я не получаю HTML-файл, чтобы посмотреть, потому что общий процесс вязания не удается. Как я могу отладить это в моей консоли?

Я пытался этот ответ , но безуспешно.

1 Ответ

0 голосов
/ 18 мая 2019

Вы можете использовать stop(path), чтобы завершить компиляцию с сообщением об ошибке с указанием пути.Например, поместите это в ваш .Rmd файл:

```{r}
path <- "c:/wrong/path"
stop("path=",path)
```

Вот что я вижу, когда запускаю этот файл в командной строке:

label: unnamed-chunk-1
Quitting from lines 19-21 (untitled.Rmd) 
Error in eval(expr, envir, enclos) : path=c:/wrong/path
Calls: <Anonymous> ... handle -> withCallingHandlers -> withVisible -> eval -> eval

Execution halted

Пока вы ставитеэто в файле перед фактической ошибкой, которая убивает ваш компилятор, вы увидите это.

Отредактировано, чтобы добавить: вы также можете использовать warning() или message() (как упомянуто @sindri_baldur) для этого, но для тех, кому нужно изменить значение чанка по умолчанию на warning=FALSE или message=FALSE соответственно, чтобы сообщение перешло на stderr и отобразилось в консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...