checkdownGet the stable version from CRAN:
… or get the development version from GitHub:
The main goal of this package to create checking fields and boxes in
rmarkdown. It could be used in class, when teacher share
materials and tasks (as an .html page or an
.html slides), so student can solve some problems and check
themselves. It is really important since some students are too shy to
ask a question, so you can create tasks that will check on the fly the
understanding of the class material and give some hints to those
students that get stuck. In contrast to the learnr
package the checkdown package works without
shiny and could be stored as a simple .html
page (e. g. on Github Pages). In contrast to the exams output the
checkdown package creates interactive autochecking tasks.
The interactive version of the exams output is bind to
Blackboard Learn, that is really nice, but looks like an overkill for
the simple task that checkdown solves.
Load the library:
check_question()
functionImagine that we want to create a checkbox with the answer 4. All you
need is to create a following chunk in your rmarkdown
document:
It is possible to change wrong and right answer’s messages using
wrong and right arguments of the
check_question() function. Let’s create some more
questions.
Solve 3+3:
Type la-la:
It is possible to use placeholder argument in order to
show what kind of answer you expect:
Number of answers is not limited:
It is also possible to create a list of answers for students to choose:
If the list of possible answers is small, it is possible to align
them in one line using alignment argument:
check_question("banana", options = c("apple", "banana", "bread"), type = "radio", alignment = "horizontal")You can shuffle answers using the random_answer_order
argument:
check_question("banana", options = c("apple", "banana", "bread"), type = "radio", random_answer_order = TRUE)If you don’t want to give the possibility of automatically check your
question, just put NULL in the answer
argument:
check_hint() functionSometimes you know in advance what kind of mistakes will your
students do. Some students are shy and don’t like asking questions, so
hints could partially solve this problem. Again all you need is to
create a following chunk with the chunck atribute
results='asis' in your rmarkdown document:
Of course it is possible to change the message of the part that
should be clicked, just use the hint_title argument:
By default you need to click on the hint in order to make it appear,
but this behaviour can be changed with the type
argument:
check_hint("You can use the rmarkdown package inside checkdown",
hint_title = "Put mouse over here",
type = "onmouseover")check_hint("You can use the rmarkdown package inside checkdown",
hint_title = "Double click here",
type = "ondblclick")It is possible to use Markdown inside messages:
check_hint("- You can use `markdown` **inside** the [`chcekdown` package](https://agricolamz.github.io/checkdown/)",
hint_title = "Click he`R`e")ReThere is also a function for multiple hints:
check_hints(hint_text = c("look into the hint 2", "look into the hint 1"),
hint_title = c("hint 1", "hint 2"),
list_title = "list of hints")Sometimes it is nice to use images as a question. It also could be
useful to insert images in hints. In order to do it you need to use
insert_images() function, and enumerate the correct
answer.
check_question(answer = 3,
type = "radio",
options = insert_images(c("windows.png",
"mac.png",
"linux.png"),
image_width = 30))Arguments image_width and image_height also
except vector of values in case you need different size for different
pictures. It is also possible to create a picture during the session,
save it and use in checkdown functions.
tmp <- tempfile(fileext = ".png")
library(ggplot2)
ggplot(data = mtcars, aes(mpg, disp)) + geom_point()
ggsave(filename = tmp)Let’s use obtained picture in the hint (notice, how I used percantage
in the image_width argument):
It looks like it is better to change font size, if you want to change the size of the picture.
.html. Just
use the chunk argument echo=FALSE.checkdown works only with html
output and will not print anything for other outputs.log(3/4) it is possible that they will see only 6 or 7
numbers after the comma. So it make sense explicitly specify precision
using round() function.## [1] -0.2876821