首页 > 解决方案 > 从命令行调试 RMarkdown 文件

问题描述

我正在尝试获取由其他人编写的 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 文件来查看,因为整个编织过程都失败了。如何在我的控制台中调试它?

我试过这个答案没有成功。

标签: rr-markdown

解决方案


您可以使用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()or message()(正如@sindri_baldur 提到的),但对于那些您需要将块默认更改为warning=FALSEormessage=FALSE的人,消息会转到stderr并显示在控制台中。


推荐阅读