【问题标题】:Include error messages from testthat in R markdown document在 R markdown 文档中包含来自 testthat 的错误消息
【发布时间】:2018-04-30 00:49:31
【问题描述】:

我想在 R markdown pdf 报告中包含错误消息。这很好用:

---
output: pdf_document
---

This will be knitted and show the error message in the pdf.
```{r, error = TRUE}
stopifnot(2 == 3)
```

但是,如果我尝试使用来自 testthat 的错误的相同方法,我的文档将不再编织。

---
output: pdf_document
---

This will not knit
```{r, error = TRUE}
library(testthat)
expect_equal(2, 3)
```

这是为什么呢?我可以做些什么来包含来自testthatexpect_something 函数的错误消息而不将它们包装在测试中?

我认为这一定是可能的,因为 Hadley Wickham 在他的书 R 包中包含许多直接来自 expect_something-functions 的错误消息。

这是相关的,但在Include errors in R markdown package vignetteHow to skip error checking at Rmarkdown compiling? 中没有回答

【问题讨论】:

标签: r knitr r-markdown testthat


【解决方案1】:

我不明白这种行为的原因(好问题!),但这可能是一种解决方法:

---
output: pdf_document
---

This will knit
```{r, error = TRUE}
library(testthat)
# expect_equal(2, 3)
# skip_if_not(2, 3)
assertthat::assert_that(2 == 3)
```

【讨论】:

  • 感谢您的回答。遗憾的是,这并没有真正帮助,因为我想包含来自 testthat 包的更多信息错误消息。请注意,expect_equal(2, 3)skip_if_not(2, 3) 不会抛出相同的错误消息。
  • 也许assertthat 更好?来自here。见编辑...
【解决方案2】:

创建一个测试:

```{r, error = TRUE}
library(testthat)
test_that("Test A", {
  expect_equal(2, 3)
})
```

【讨论】:

  • 感谢您的回答。这可能是一种解决方法。但我仍然希望能够直接包含来自expect_something 函数的错误。请参阅我对问题的编辑。
  • 据我所知,所有错误消息都来自测试中包含的比较。如果有只比较的块,他设置了eval = F (github.com/hadley/r-pkgs/blob/master/tests.rmd)
  • 确实如此。但他最近才改变了这一点。 github.com/hadley/r-pkgs/commit/… 所以可能存在问题,目前可能无法包含来自expect_something 函数的错误消息..
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2021-10-03
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多