I am attempting to use the interactive Markdown functionality provided by the targets
package in R (more information here: https://books.ropensci.org/targets/markdown.html). I'm using the template R Markdown file, which builds a pipeline for analyzing the airquality
dataset. In section 3.6 Globals of the manual, it says that I can run the some-globals
target chunk with tar_interactive = TRUE
and should get the message: #> Run code and assign objects to the environment
. However, this message does not appear (no message appears).
When following section 3.7 Target definitions, a similar issue occurs. When I run the raw-data
chunk with interactive mode on (tar_interactive = TRUE
), the manual says that the target's R command runs, some checks are performed, and the same message (#> Run code and assign objects to the environment
) should appear. Furthermore, it says that the return value is available in memory and an ordinary R code chunk can read said object. The example provided is an R code chunk with head(raw_data)
. Again, the message Run code and assign...
does not appear when I run the raw-data
chunk and no object raw_data
is available in memory for head(raw_data)
to read. Instead, this is the output that shows up in the R console in R Studio when I run the raw-data
chunk:
> tar_target(raw_data, airquality)
<tar_stem>
name: raw_data
command:
airquality
format: rds
iteration method: vector
error mode: stop
memory mode: persistent
storage mode: main
retrieval mode: main
deployment mode: worker
priority: 0
resources:
list()
cue:
mode: thorough
command: TRUE
depend: TRUE
format: TRUE
iteration: TRUE
file: TRUE
packages:
biglm
dplyr
ggplot2
readr
tidyr
library:
NULL
So the interactive mode does not appear to be working as described in the manual. I am able to knit the template document successfully so long as all the targets chunks are set with tar_interactive = FALSE
. At first I thought that maybe I had to knit the document in the non-interactive mode and then, because the targets would be in the cache set up by targets
, I could access the objects in the interactive mode, but that does not work either (and if it did work, it seems it would defeat the purpose of prototyping the pipeline in interactive mode first). Am I missing something?
> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] targets_0.7.0
loaded via a namespace (and not attached):
[1] igraph_1.2.6 knitr_1.30 magrittr_2.0.1 tidyselect_1.1.0 munsell_0.5.0 colorspace_1.4-1
[7] R6_2.5.0 rlang_0.4.10 fansi_0.4.2 dplyr_1.0.7 tools_4.0.3 grid_4.0.3
[13] data.table_1.13.6 gtable_0.3.0 xfun_0.21 utf8_1.1.4 cli_2.5.0 DBI_1.1.0
[19] withr_2.4.2 ellipsis_0.3.2 yaml_2.2.1 digest_0.6.27 assertthat_0.2.1 tibble_3.1.2
[25] lifecycle_1.0.0 crayon_1.4.1 processx_3.5.2 purrr_0.3.4 callr_3.7.0 ggplot2_3.3.5
[31] codetools_0.2-16 ps_1.5.0 vctrs_0.3.8 glue_1.4.2 compiler_4.0.3 pillar_1.6.1
[37] generics_0.1.0 scales_1.1.1 pkgconfig_2.0.3
My issue was caused because at some point I had unchecked "Show output inline for all R Markdown documents" in the Tools > Global Options > R Markdown menu, which had removed the little green "Run" arrow from the non-r engine code chunks. I had resorted to running each line of code one-by-one. This did not properly use the targets engine. Rechecking that box returned the run arrow and clicking the run arrow allowed the targets engine to properly run the code and return the expected output.
User landau helped me identify that calling rmarkdown::render() in the console would serve to run the target chunks using the targets engine in the absence of the green run arrow.