I am trying to understand why the code included in the @examples section of a package I am working on produces different outputs depending if it runs using devtools::run_exmaples() or devtools::check()
From time to time I included in the example code like, e.g.: stopifnot(nrow(x) == 5540)
When I run the code by copy pasting it into the R console it produces NO errors, If I run it using devtools::run_examples() there are no errors, however when the examples are executed using devtools::check() or R CMD check the example check fails with:
> stopifnot(nrow(x) == 5540)
Error: nrow(x) == 5540 is not TRUE
What might be the reason for it? What should I look into? are the examples run in a different environment? Is it the order of the examples that changes? Are there side effects? Is it possible that the lib.path is different?
It could be a number of things, but it is difficult to speculate without more information unfortunately. I would encourage you to try to isolate the differences, and see what x looks like in both cases.
Thank you. I followed your idea to have a look at x. I came up writing the x into a file when executing the run_examples and check commands, and then comparing them.
Below I show the start of the example code.
LFQService::ionstar is an R6 object that resides in the package's data directory and contains some example data, which I assign to the variable bb. To my surprise, the variable bb differs, depending on if I run the check or the examples. This difference explains the difference in the example result. However, no idea why the data changes!?
Is it possible that clean_Ex() works differently in the run_examples and check?
I am speculating that it is an R6 class reference semantics, and clean_Ex(), when executed from the check, does not remove the LFQService::ionstar; hence LFQService::ionstar is not loaded from disc, but some version changed in one of the previous examples is used.