The {webexercises} package

The goal of {webexercises} is to enable instructors to easily create interactive web pages that students can use in self-guided learning. Although {webexercises} has fewer features than RStudio’s learnr package, it is more lightweight: whereas {learnr} tutorials must be either hosted on a shiny server or run locally, {webexercises} creates standalone HTML files that require only a JavaScript-enabled browser. It is also extremely simple to use.


You can install {webexercises} from CRAN using:


You can install the development version from GitHub with:


Creating interactive widgets with inline code

The webexercises package provides functions that create HTML widgets using inline R code. These functions are:

| function | widget | description | |:------------------------|:---------------|:-------------------------------| | fitb() | text box | fill-in-the-blank question | | mcq() | pull-down menu | multiple choice question | | torf() | pull-down menu | TRUE or FALSE question | | longmcq() | radio buttons | MCQs with long answers | | hide() and unhide() | button | solution revealed when clicked | | total_correct() | text | updating total correct |

The appearance of the text box and pull-down menu widgets changes when users enter the correct answer. Answers can be either static or dynamic (i.e., specified using R code). Widget styles can be changed using style_widgets().

Examples are provided in the Web Exercises R Markdown template. To create a file from the webexercises template in RStudio, click File -> New File... -> RMarkdown and in the dialog box that appears, select From Template and choose Web Exercises.

Alternatively (or if you’re not using RStudio) use:

rmarkdown::draft("exercises.Rmd", "webexercises", "webexercises")

Knit the file to HTML to see how it works. Note: The widgets only function in a JavaScript-enabled browser.


You can add webexercises to a bookdown project or start a new bookdown project using add_to_bookdown().

# create a new book
# use default includes and scripts directories (include and R)
add_to_bookdown(bookdown_dir = "demo_bs4",
                output_format = "bs4_book",
                render = TRUE)

add_to_bookdown(bookdown_dir = "demo_git",
                output_format = "gitbook",
                render = TRUE)

add_to_bookdown(bookdown_dir = "demo_html",
                output_format = "html_book",
                render = TRUE)

add_to_bookdown(bookdown_dir = "demo_tufte",
                output_format = "tufte_html_book",
                render = TRUE)

# update an existing book with custom include and script directories
add_to_bookdown(bookdown_dir = ".",
                include_dir = "www",
                script_dir = "scripts",
                output_format = "gitbook")

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Try the webexercises package in your browser

Any scripts or data that you put into this service are public.

webexercises documentation built on Sept. 15, 2021, 9:09 a.m.