r - 从命令行调试 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 文件来查看,因为整个编织过程都失败了。如何在我的控制台中调试它?
我试过这个答案没有成功。
解决方案
您可以使用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=FALSE
ormessage=FALSE
的人,消息会转到stderr
并显示在控制台中。
推荐阅读
- flutter - 如何将子项添加到 ExpansionPanelList - ListView.Builder?
- rust - 为什么 Rust 不阻止我声明多个可变引用?
- python - Python动态,多线程变量不起作用
- python - 如何让我的海龟赛跑游戏连续运行?
- c# - 无法从 'System.Linq.Expressions.Expression 转换
>' 到 'System.Linq.Expressions.Expression >' - jq - 使用 jq 变量(来自“as”)查找键
- scala - Spark Scala 从选择查询结果中填充数据框
- ruby - 如何使用 Ruby 将图像发送到运行 TensorFlow/Keras CNN 的已部署 Sagemaker 端点?
- swift - 错误:当我想创建档案(以生成 ipa)时,无法创建配置文件
- mysql - MYSQL:如何从 2 个表中计数和分组,然后加入到第 3 个表