Enumerate exercise subparts with letters

This commit is contained in:
Mine Çetinkaya-Rundel 2021-02-21 17:32:37 +00:00
parent 852f6b98a0
commit fbb738e799
8 changed files with 70 additions and 89 deletions

View File

@ -495,11 +495,11 @@ Note that all colour scales come in two variety: `scale_colour_x()` and `scale_f
3. Change the display of the presidential terms by: 3. Change the display of the presidential terms by:
1. Combining the two variants shown above. a. Combining the two variants shown above.
2. Improving the display of the y axis. b. Improving the display of the y axis.
3. Labelling each term with the name of the president. c. Labelling each term with the name of the president.
4. Adding informative plot labels. d. Adding informative plot labels.
5. Placing breaks every 4 years (this is trickier than it seems!). e. Placing breaks every 4 years (this is trickier than it seems!).
4. Use `override.aes` to make the legend on the following plot easier to see. 4. Use `override.aes` to make the legend on the following plot easier to see.

View File

@ -100,10 +100,10 @@ Then we'll move on some variations of the for loop that help you solve other pro
1. Write for loops to: 1. Write for loops to:
1. Compute the mean of every column in `mtcars`. a. Compute the mean of every column in `mtcars`.
2. Determine the type of each column in `nycflights13::flights`. b. Determine the type of each column in `nycflights13::flights`.
3. Compute the number of unique values in each column of `palmerpenguins::penguins`. c. Compute the number of unique values in each column of `palmerpenguins::penguins`.
4. Generate 10 random normals from distributions with means of -10, 0, 10, and 100. d. Generate 10 random normals from distributions with means of -10, 0, 10, and 100.
Think about the output, sequence, and body **before** you start writing the loop. Think about the output, sequence, and body **before** you start writing the loop.
@ -132,13 +132,9 @@ Then we'll move on some variations of the for loop that help you solve other pro
3. Combine your function writing and for loop skills: 3. Combine your function writing and for loop skills:
1. Write a for loop that `prints()` the lyrics to the children's song "Alice the camel". a. Write a for loop that `prints()` the lyrics to the children's song "Alice the camel".
b. Convert the nursery rhyme "ten in the bed" to a function. Generalise it to any number of people in any sleeping structure.
2. Convert the nursery rhyme "ten in the bed" to a function. c. Convert the song "99 bottles of beer on the wall" to a function. Generalise to any number of any vessel containing any liquid on any surface.
Generalise it to any number of people in any sleeping structure.
3. Convert the song "99 bottles of beer on the wall" to a function.
Generalise to any number of any vessel containing any liquid on any surface.
4. It's common to see for loops that don't preallocate the output and instead increase the length of a vector at each step: 4. It's common to see for loops that don't preallocate the output and instead increase the length of a vector at each step:
@ -634,10 +630,10 @@ I focus on purrr functions here because they have more consistent names and argu
1. Write code that uses one of the map functions to: 1. Write code that uses one of the map functions to:
1. Compute the mean of every column in `mtcars`. a. Compute the mean of every column in `mtcars`.
2. Determine the type of each column in `nycflights13::flights`. b. Determine the type of each column in `nycflights13::flights`.
3. Compute the number of unique values in each column of `palmerpenguins::penguins`. c. Compute the number of unique values in each column of `palmerpenguins::penguins`.
4. Generate 10 random normals from distributions with means of -10, 0, 10, and 100. d. Generate 10 random normals from distributions with means of -10, 0, 10, and 100.
2. How can you create a single vector that for each column in a data frame indicates whether or not it's a factor? 2. How can you create a single vector that for each column in a data frame indicates whether or not it's a factor?

View File

@ -167,11 +167,11 @@ For example, in this data there's a many-to-many relationship between airlines a
2. Identify the keys in the following datasets 2. Identify the keys in the following datasets
1. `Lahman::Batting`, a. `Lahman::Batting`,
2. `babynames::babynames` b. `babynames::babynames`
3. `nasaweather::atmos` c. `nasaweather::atmos`
4. `fueleconomy::vehicles` d. `fueleconomy::vehicles`
5. `ggplot2::diamonds` e. `ggplot2::diamonds`
(You might need to install some packages and read some documentation.) (You might need to install some packages and read some documentation.)

View File

@ -124,9 +124,9 @@ If you forget, you can get to a handy reference sheet with *Help \> Markdown Qui
2. Using the R Markdown quick reference, figure out how to: 2. Using the R Markdown quick reference, figure out how to:
1. Add a footnote. a. Add a footnote.
2. Add a horizontal rule. b. Add a horizontal rule.
3. Add a block quote. c. Add a block quote.
3. Copy and paste the contents of `diamond-sizes.Rmd` from <https://github.com/hadley/r4ds/tree/master/rmarkdown> in to a local R markdown document. 3. Copy and paste the contents of `diamond-sizes.Rmd` from <https://github.com/hadley/r4ds/tree/master/rmarkdown> in to a local R markdown document.
Check that you can run it, then add text after the frequency polygon that describes its most striking features. Check that you can run it, then add text after the frequency polygon that describes its most striking features.

View File

@ -314,10 +314,10 @@ For example, I'll search for `\bsum\b` to avoid matching `summarise`, `summary`,
2. Given the corpus of common words in `stringr::words`, create regular expressions that find all words that: 2. Given the corpus of common words in `stringr::words`, create regular expressions that find all words that:
1. Start with "y". a. Start with "y".
2. End with "x" b. End with "x"
3. Are exactly three letters long. (Don't cheat by using `str_length()`!) c. Are exactly three letters long. (Don't cheat by using `str_length()`!)
4. Have seven letters or more. d. Have seven letters or more.
Since this list is long, you might want to use the `match` argument to `str_view()` to show only the matching or non-matching words. Since this list is long, you might want to use the `match` argument to `str_view()` to show only the matching or non-matching words.
@ -360,14 +360,10 @@ str_view(c("grey", "gray"), "gr(e|a)y")
1. Create regular expressions to find all words that: 1. Create regular expressions to find all words that:
1. Start with a vowel. a. Start with a vowel.
b. That only contain consonants. (Hint: thinking about matching "not"-vowels.)
2. That only contain consonants. c. End with `ed`, but not with `eed`.
(Hint: thinking about matching "not"-vowels.) d. End with `ing` or `ise`.
3. End with `ed`, but not with `eed`.
4. End with `ing` or `ise`.
2. Empirically verify the rule "i before e except after c". 2. Empirically verify the rule "i before e except after c".
@ -423,16 +419,16 @@ str_view(x, 'C[LX]+?')
2. Describe in words what these regular expressions match: (read carefully to see if I'm using a regular expression or a string that defines a regular expression.) 2. Describe in words what these regular expressions match: (read carefully to see if I'm using a regular expression or a string that defines a regular expression.)
1. `^.*$` a. `^.*$`
2. `"\\{.+\\}"` b. `"\\{.+\\}"`
3. `\d{4}-\d{2}-\d{2}` c. `\d{4}-\d{2}-\d{2}`
4. `"\\\\{4}"` d. `"\\\\{4}"`
3. Create regular expressions to find all words that: 3. Create regular expressions to find all words that:
1. Start with three consonants. a. Start with three consonants.
2. Have three or more vowels in a row. b. Have three or more vowels in a row.
3. Have two or more vowel-consonant pairs in a row. c. Have two or more vowel-consonant pairs in a row.
4. Solve the beginner regexp crosswords at <https://regexcrossword.com/challenges/beginner>. 4. Solve the beginner regexp crosswords at <https://regexcrossword.com/challenges/beginner>.
@ -454,19 +450,17 @@ str_view(fruit, "(..)\\1", match = TRUE)
1. Describe, in words, what these expressions will match: 1. Describe, in words, what these expressions will match:
1. `(.)\1\1` a. `(.)\1\1`
2. `"(.)(.)\\2\\1"` b. `"(.)(.)\\2\\1"`
3. `(..)\1` c. `(..)\1`
4. `"(.).\\1.\\1"` d. `"(.).\\1.\\1"`
5. `"(.)(.)(.).*\\3\\2\\1"` e. `"(.)(.)(.).*\\3\\2\\1"`
2. Construct regular expressions to match words that: 2. Construct regular expressions to match words that:
1. Start and end with the same character. a. Start and end with the same character.
b. Contain a repeated pair of letters (e.g. "church" contains "ch" repeated twice.)
2. Contain a repeated pair of letters (e.g. "church" contains "ch" repeated twice.) c. Contain one letter repeated in at least three places (e.g. "eleven" contains three "e"s.)
3. Contain one letter repeated in at least three places (e.g. "eleven" contains three "e"s.)
## Tools ## Tools
@ -666,11 +660,9 @@ The second function will have the suffix `_all`.
1. For each of the following challenges, try solving it by using both a single regular expression, and a combination of multiple `str_detect()` calls. 1. For each of the following challenges, try solving it by using both a single regular expression, and a combination of multiple `str_detect()` calls.
1. Find all words that start or end with `x`. a. Find all words that start or end with `x`.
b. Find all words that start with a vowel and end with a consonant.
2. Find all words that start with a vowel and end with a consonant. c. Are there any words that contain at least one of each different vowel?
3. Are there any words that contain at least one of each different vowel?
2. What word has the highest number of vowels? 2. What word has the highest number of vowels?
What word has the highest proportion of vowels? What word has the highest proportion of vowels?
@ -1048,8 +1040,8 @@ The main difference is the prefix: `str_` vs. `stri_`.
1. Find the stringi functions that: 1. Find the stringi functions that:
1. Count the number of words. a. Count the number of words.
2. Find duplicated strings. b. Find duplicated strings.
3. Generate random text. c. Generate random text.
2. How do you control the language that `stri_sort()` uses for sorting? 2. How do you control the language that `stri_sort()` uses for sorting?

View File

@ -184,13 +184,10 @@ With tibbles, `[` always returns another tibble.
4. Practice referring to non-syntactic names in the following data frame by: 4. Practice referring to non-syntactic names in the following data frame by:
1. Extracting the variable called `1`. a. Extracting the variable called `1`.
b. Plotting a scatterplot of `1` vs `2`.
2. Plotting a scatterplot of `1` vs `2`. c. Creating a new column called `3` which is `2` divided by `1`.
d. Renaming the columns to `one`, `two` and `three`.
3. Creating a new column called `3` which is `2` divided by `1`.
4. Renaming the columns to `one`, `two` and `three`.
```{r} ```{r}
annoying <- tibble( annoying <- tibble(

View File

@ -229,13 +229,13 @@ filter(df, is.na(x) | x > 1)
1. Find all flights that 1. Find all flights that
1. Had an arrival delay of two or more hours a. Had an arrival delay of two or more hours
2. Flew to Houston (`IAH` or `HOU`) b. Flew to Houston (`IAH` or `HOU`)
3. Were operated by United, American, or Delta c. Were operated by United, American, or Delta
4. Departed in summer (July, August, and September) d. Departed in summer (July, August, and September)
5. Arrived more than two hours late, but didn't leave late e. Arrived more than two hours late, but didn't leave late
6. Were delayed by at least an hour, but made up over 30 minutes in flight f. Were delayed by at least an hour, but made up over 30 minutes in flight
7. Departed between midnight and 6am (inclusive) g. Departed between midnight and 6am (inclusive)
2. Another useful dplyr filtering helper is `between()`. 2. Another useful dplyr filtering helper is `between()`.
What does it do? What does it do?

View File

@ -412,14 +412,10 @@ The distinction between `[` and `[[` is most important for lists, as we'll see s
4. Create functions that take a vector as input and returns: 4. Create functions that take a vector as input and returns:
1. The last value. a. The last value. Should you use `[` or `[[`?
Should you use `[` or `[[`? b. The elements at even numbered positions.
c. Every element except the last value.
2. The elements at even numbered positions. d. Only even numbers (and no missing values).
3. Every element except the last value.
4. Only even numbers (and no missing values).
5. Why is `x[-which(x > 0)]` not the same as `x[x <= 0]`? 5. Why is `x[-which(x > 0)]` not the same as `x[x <= 0]`?
@ -561,8 +557,8 @@ knitr::include_graphics("images/pepper-3.jpg")
1. Draw the following lists as nested sets: 1. Draw the following lists as nested sets:
1. `list(a, b, list(c, d), list(e, f))` a. `list(a, b, list(c, d), list(e, f))`
2. `list(list(list(list(list(list(a))))))` b. `list(list(list(list(list(list(a))))))`
2. What happens if you subset a tibble as if you're subsetting a list? 2. What happens if you subset a tibble as if you're subsetting a list?
What are the key differences between a list and a tibble? What are the key differences between a list and a tibble?