从命令行调试RMarkdown文件

时间:2019-05-17 16:42:12

标签: r r-markdown

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

我尝试this answer失败。

1 个答案:

答案 0 :(得分:0)

您可以使用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或{{ 1}},因此消息将转到message=FALSE,并显示在控制台中。