Search code examples
rr-exams

r-exams Questions about the same data on 2 separate xxx.Rmd files


Using R exams, I am developing a pdf exam with several questions (hence several Rmd files) but the questions are connected and would use a dataset created in the first question file. Questions would not be amenable to a cloze format.

Is there a way to write the exercises so that the second exercise can access the data generated by the first exercise ?


Solution

  • The easiest solution is to use a shared environment across the different exercises, in the simplest case the .GlobalEnv. Then you can simply do

    exams2pdf(c("ex1.Rmd", "ex2.Rmd"), envir = .GlobalEnv)
    

    and then both exercises will create their variables in the global environment and can re-use existing variables from there. Instead of the .GlobalEnv you can also create myenv <- new.env() and use envir = myenv.

    For Rnw (as opposed to Rmd) exercises, it is not necessary to set this option because Sweave() Rnw exercises are always processed in the current environment anyway.

    Note that these approaches only work for those exams2xyz() interfaces, where the n-th random draw from each exercise can be assured to end up together in the n-the exam. This is the case for PDF output but not for many of the learning management system outputs (Moodle, Canvas, etc.). See: Sharing a random CSV data set across exercises with exams2moodle()