Newer
Older
teaching: 10
exercises: 2
questions:
- "How to write a lesson using RMarkdown?"
objectives:
- "Explain how to use RMarkdown with the new lesson template."
- "Demonstrate how to include pieces of code, figures, and challenges."
keypoints:
- "It shouldn't be difficult"
---
This episode demonstrates all the features that can be used when writing a
lesson in [RMarkdown][r-markdown].
To generate the site, you will need to have the following packages installed:
```{r, eval=FALSE}
install.packages(c("knitr", "stringr", "checkpoint"))
```
If the lesson uses additional packages, the script that converts the Rmd files
into markdown, will detect them and install them for you, when you run `make
serve` or `make site`.
This first chunk is really important, and need to be included at the beginning of
each episode written in RMarkdown.
```{r, echo=TRUE}
source("../bin/chunk-options.R")
```
The rest of the lesson should be written as a normal RMarkdown file. You can
include chunk for codes, just like you'd normally do.
Normal output:
```{r}
1 + 1
```
Output with error message:
```{r}
x[10]
```
Output generating figures:
```{r plot-example}
library(ggplot2)
ggplot(diamonds, aes(x = carat, y = price, color = cut)) +
geom_point()
```
For the challenges and their solutions, you need to pay attention to where the
`>` go and where to leave blank lines. You can include code chunks in both the
instructions and solutions. For instance this:
```
> ## Challenge: Can you do it?
>
> What is the output of this command?
>
> ```{r, eval=FALSE}
> paste("This", "new", "template", "looks", "good")
> ```
>
> > ## Solution
> >
> > ```{r, echo=FALSE}
> > paste("This", "new", "template", "looks", "good")
> > ```
> {: .solution}
{: .challenge}
```
will generate this:
> ## Challenge: Can you do it?
>
> What is the output of this command?
>
> ```{r, eval=FALSE}
> paste("This", "new", "template", "looks", "good")
> ```
>
> > ## Solution
> >
> > ```{r, echo=FALSE}
> > paste("This", "new", "template", "looks", "good")
> > ```
> {: .solution}
{: .challenge}