Knitting Rmd fails if chunk ends with non-printing code
@rich-iannone is already working on this.
Since Jul 19, 2022.
- Dominant language
- R
- Stars
- 1k
- Forks
- 59
- Avg merge
- 25m
- Merged PRs (30d)
- 4
Description
Prework
- Read and agree to the code of conduct and contributing guidelines.
- If there is already a relevant issue, whether open or closed, comment on the existing thread instead of posting a new issue.
- Post a minimal reproducible example so the maintainer can troubleshoot the problems you identify. A reproducible example is:
- Runnable: post enough R code and data so any onlooker can create the error on their own computer.
- Minimal: reduce runtime wherever possible and remove complicated details that are irrelevant to the issue at hand.
- Readable: format your code according to the tidyverse style guide.
Description
This took me a while to figure out why the first example of my own I tried didn't work, so perhaps it's useful to others (and maybe avoidable). If an Rmd chunk with validate = TRUE ends with a non-printing statement, the entire file fails to knit. A conceivable example of this would be a comment.
Reproducible example
Using the template Rmd and adding additional content that produces no printed output (e.g. assignment or a comment) at the end of the chunk, e.g.
```{r validation_step_functions, validate = TRUE}
col_exists(small_table, columns = vars(a, b, c, d, e, f))
rows_distinct(small_table, vars(d, e))
col_vals_gt(small_table, vars(d), 1000)
# this shouldn't matter
```
Less likely to occur, but not (as far as I could see) advised against:
```{r validation_step_functions, validate = TRUE}
col_exists(small_table, columns = vars(a, b, c, d, e, f))
rows_distinct(small_table, vars(d, e))
col_vals_gt(small_table, vars(d), 1000)
a <- 1
```
Non-printing statements elsewhere in the chunk appear to work fine.
Similarly for the (usually passing) piped example
```{r validate = TRUE}
small_table %>%
col_is_date("date") %>%
col_vals_gt(vars(d), vars(c), na_pass = TRUE)
#
```
or
```{r validate = TRUE}
small_table %>%
col_is_date("date") %>%
col_vals_gt(vars(d), vars(c), na_pass = TRUE) %>%
invisible()
```
When ending with a non-printing statement, the file fails to knit with error:
Error in if (agent_tbl_vec[i]) { : missing value where TRUE/FALSE needed
Calls: <Anonymous> ... block_exec -> eng_r -> <Anonymous> -> remix_content
Execution halted
I can only guess, but perhaps something to do with extract_output().
I did note the advice
For best rendering results, don't place anything else inside the chunk
but I took that to mean it was optional - it appears it's essential that the final statement produces some output.
Statements on the final line that output something appear to be okay
```{r validation_step_functions, validate = TRUE}
col_exists(small_table, columns = vars(a, b, c, d, e, f))
rows_distinct(small_table, vars(d, e))
col_vals_gt(small_table, vars(d), 1000)
1
```
or with identity(1), 1+1, or (a <- 1), but not invisible(1) or stopifnot(TRUE).
Expected result
No errors should be produced, the file should knit as usual.
Session info
Click to expand
## ─ Session info ───────────────────────────────────────────────────────────────
## setting value
## version R version 4.2.1 (2022-06-23)
## os macOS Monterey 12.4
## system aarch64, darwin20
## ui X11
## language (EN)
## collate en_US.UTF-8
## ctype en_US.UTF-8
## tz Australia/Adelaide
## date 2022-07-19
## pandoc 2.18 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/ (via rmarkdown)
##
## ─ Packages ───────────────────────────────────────────────────────────────────
## package * version date (UTC) lib source
## assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.2.0)
## backports 1.4.1 2021-12-13 [1] CRAN (R 4.2.0)
## base64enc 0.1-3 2015-07-28 [1] CRAN (R 4.2.0)
## blastula 0.3.2 2020-05-19 [1] CRAN (R 4.2.0)
## bslib 0.3.1 2021-10-06 [1] CRAN (R 4.2.0)
## cachem 1.0.6 2021-08-19 [1] CRAN (R 4.2.0)
## callr 3.7.0 2021-04-20 [1] CRAN (R 4.2.0)
## checkmate 2.1.0 2022-04-21 [1] CRAN (R 4.2.0)
## cli 3.3.0 2022-04-25 [1] CRAN (R 4.2.0)
## colorspace 2.0-3 2022-02-21 [1] CRAN (R 4.2.0)
## commonmark 1.8.0 2022-03-09 [1] CRAN (R 4.2.0)
## crayon 1.5.1 2022-03-26 [1] CRAN (R 4.2.0)
## DBI 1.1.3 2022-06-18 [1] CRAN (R 4.2.0)
## devtools 2.4.3 2021-11-30 [1] CRAN (R 4.2.0)
## digest 0.6.29 2021-12-01 [1] CRAN (R 4.2.0)
## dplyr 1.0.9 2022-04-28 [1] CRAN (R 4.2.0)
## ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.2.0)
## evaluate 0.15 2022-02-18 [1] CRAN (R 4.2.0)
## fansi 1.0.3 2022-03-24 [1] CRAN (R 4.2.0)
## fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.2.0)
## fs 1.5.2 2021-12-08 [1] CRAN (R 4.2.0)
## generics 0.1.2 2022-01-31 [1] CRAN (R 4.2.0)
## ggplot2 3.3.6 2022-05-03 [1] CRAN (R 4.2.0)
## glue 1.6.2 2022-02-24 [1] CRAN (R 4.2.0)
## gt 0.6.0 2022-05-24 [1] CRAN (R 4.2.0)
## gtable 0.3.0 2019-03-25 [1] CRAN (R 4.2.0)
## htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.2.0)
## jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.2.0)
## jsonlite 1.8.0 2022-02-22 [1] CRAN (R 4.2.0)
## knitr 1.39 2022-04-26 [1] CRAN (R 4.2.0)
## lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.2.0)
## magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.2.0)
## memoise 2.0.1 2021-11-26 [1] CRAN (R 4.2.0)
## munsell 0.5.0 2018-06-12 [1] CRAN (R 4.2.0)
## pillar 1.7.0 2022-02-01 [1] CRAN (R 4.2.0)
## pkgbuild 1.3.1 2021-12-20 [1] CRAN (R 4.2.0)
## pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.2.0)
## pkgload 1.3.0 2022-06-27 [1] CRAN (R 4.2.0)
## pointblank * 0.11.0.9000 2022-07-19 [1] Github (rich-iannone/pointblank@7921da3)
## prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.2.0)
## processx 3.6.1 2022-06-17 [1] CRAN (R 4.2.0)
## ps 1.7.1 2022-06-18 [1] CRAN (R 4.2.0)
## purrr 0.3.4 2020-04-17 [1] CRAN (R 4.2.0)
## R6 2.5.1 2021-08-19 [1] CRAN (R 4.2.0)
## remotes 2.4.2 2021-11-30 [1] CRAN (R 4.2.0)
## rlang 1.0.3 2022-06-27 [1] CRAN (R 4.2.0)
## rmarkdown 2.14 2022-04-25 [1] CRAN (R 4.2.0)
## rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.2.0)
## sass 0.4.1 2022-03-23 [1] CRAN (R 4.2.0)
## scales 1.2.0 2022-04-13 [1] CRAN (R 4.2.0)
## sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.0)
## stringi 1.7.6 2021-11-29 [1] CRAN (R 4.2.0)
## stringr 1.4.0 2019-02-10 [1] CRAN (R 4.2.0)
## tibble 3.1.7 2022-05-03 [1] CRAN (R 4.2.0)
## tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.2.0)
## usethis 2.1.6 2022-05-25 [1] CRAN (R 4.2.0)
## utf8 1.2.2 2021-07-24 [1] CRAN (R 4.2.0)
## vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.2.0)
## xfun 0.31 2022-05-10 [1] CRAN (R 4.2.0)
## yaml 2.3.5 2022-02-21 [1] CRAN (R 4.2.0)
##
## [1] /Users/jonathan.carroll/Library/R/arm64/4.2/library
## [2] /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library
##
## ──────────────────────────────────────────────────────────────────────────────
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.