Files and Folders
It is essential that you name your folders and files exactly
as specified. We run checks like
cd HW2
Rscript -e 'rmarkdown::render("hw2.Rmd")'
from the top of a clone of your repository. If the folders and files
are not named exactly as specified these checks will fail and
your work will not be graded.
Rmarkdown Usage and Coding Style
Make sure you are using Rmarkdown properly, with explanatory texts
surrounding short code chunks. In particular you should not have just
one big code chunk.
Your rendered HTML page should be a report with text supporting
numerical and graphical results. Code only needs to be visible if you
are explaining how to do something (which is a goal of the class
notes).
Your Rmarkdown code and your R code should be readable, and the R
code should follow the coding standards. This makes maintaining your
code and document easier.
Name and Date
Make sure your Rmarkdown file header contains a name:
field with your name. A date: field with an appropriate
date is also helpful.
Your header should look something like this:
---
title: "HW2"
output: html_document
name: "Your Name"
date: "February 2, 2026"
---
You can also use one of these as the date line to produce the current
date when the document is knit:
date: "`r Sys.Date()`"
date: "`r format(Sys.Date(), '%B %e, %Y')`"
Reproducibility
Make sure your .Rmd file will knit without errors.
Except for packages your code should not depend on anything not
contained in your repository.
Your code should not attempt to make any modifications outside
your repository, including installing packages.
Handling Data Files
If your Rmarkdown document makes use of an external data file you
need to make sure it can be accessed when someone you give your
repository to renders your file. There are several options:
Include the file in your repository. You can then reference it
from your code with a relative path, relative to the location
of your Rmd file. This is reasonable for small data sets
and it freezes the data at its current state.
Access the file using a URL. This will load the file over the
network each time you render your document. You need a network
connection, and you may cause unnecessary traffic if the file is
large.
Check if you have the file locally, and download it if you do
not. This is often a good option and there are several example of how to
do this in the notes.
Relying on retrieving a file from the network means it may change or
be removed. In some cases this will be what you want, in others maybe
not.
Avoiding Messages and Warnings in Output
Some packages produce messages when they are loaded and some
computations produce messages or warnings. In a final
report you usually do not want these to be visible. You can suppress
messages, like the ones produces when loading the
tidyverse, by adding the chunk option
message = FALSE. Warnings can also be suppressed with the
chunk option warning = FALSE, but it is usually better to
make sure you understand where the warnings are coming from and modify
your code to avoid them (e.g. by adding na.rm = TRUE to
some calls).
Remember to Push your Work
Remember to Push your work to your UI GitLab
repository after committing it locally. We can’t see it until you
do.
It is a good idea to check your class repository on the UI GitLab
site to make sure your submission is there.
1. Average Infant Mortality Rate Continent in 2015
The following table shows the average infant mortality rate, in
deaths per 1000 live births, for 2015 across countries in five
continents as defined in the gapminder data set from the
dslabs package.
|
Continent
|
Infant Mortality
|
|
Africa
|
48.0
|
|
Americas
|
15.6
|
|
Asia
|
18.6
|
|
Europe
|
4.5
|
|
Oceania
|
22.0
|
Infant mortality for Africa is still quite a bit higher than for the
other continents.
2. Average Infant Mortality Rate Over the Years
This graph shows average infant mortality rates over the years for
the five continents defined in the gapminder data set from
the dslabs package.

All continents show a decrease in infant mortality over time. The
curve for Africa is noticeably higher than the curves for the other
continents. The bump for 1990-2000 in the Africa curve reflects famine
events and conflicts in Africa during these years.
3. Mauna Loa Atmospheric CO\(_2\)
Concentration
This plot shows the yearly average CO\(_2\) concentration measured at the Mauna
Loa Observatory in Hawaii. Measurements are in parts per million.

CO\(_2\) levels have been rising
consistently over the years, with the rate of increase appearing to rise
slowly as well.
LS0tCnRpdGxlOiAiQXNzaWdubWVudCAyIE5vdGVzIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQoKYGBge3IgZ2xvYmFsX29wdGlvbnMsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGNvbGxhcHNlID0gVFJVRSkKYGBgCgojIyBGaWxlcyBhbmQgRm9sZGVycwoKSXQgaXMgZXNzZW50aWFsIHRoYXQgeW91IG5hbWUgeW91ciBmb2xkZXJzIGFuZCBmaWxlcyBfZXhhY3RseV8gYXMKc3BlY2lmaWVkLiBXZSBydW4gY2hlY2tzIGxpa2UKYGBgc2hlbGwKY2QgSFcyClJzY3JpcHQgLWUgJ3JtYXJrZG93bjo6cmVuZGVyKCJodzIuUm1kIiknCmBgYApmcm9tIHRoZSB0b3Agb2YgYSBjbG9uZSBvZiB5b3VyIHJlcG9zaXRvcnkuIElmIHRoZSBmb2xkZXJzCmFuZCBmaWxlcyBhcmUgbm90IG5hbWVkIF9leGFjdGx5XyBhcyBzcGVjaWZpZWQgdGhlc2UgY2hlY2tzIHdpbGwgZmFpbAphbmQgeW91ciB3b3JrIHdpbGwgbm90IGJlIGdyYWRlZC4KCgojIyBSbWFya2Rvd24gVXNhZ2UgYW5kIENvZGluZyBTdHlsZQoKTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgUm1hcmtkb3duIHByb3Blcmx5LCB3aXRoIGV4cGxhbmF0b3J5IHRleHRzCnN1cnJvdW5kaW5nIHNob3J0IGNvZGUgY2h1bmtzLiBJbiBwYXJ0aWN1bGFyIHlvdSBzaG91bGQgbm90IGhhdmUganVzdApvbmUgYmlnIGNvZGUgY2h1bmsuCgpZb3VyIHJlbmRlcmVkIEhUTUwgcGFnZSBzaG91bGQgYmUgYSByZXBvcnQgd2l0aCB0ZXh0IHN1cHBvcnRpbmcKbnVtZXJpY2FsIGFuZCBncmFwaGljYWwgcmVzdWx0cy4gQ29kZSBvbmx5IG5lZWRzIHRvIGJlIHZpc2libGUgaWYgeW91CmFyZSBleHBsYWluaW5nIGhvdyB0byBkbyBzb21ldGhpbmcgKHdoaWNoIGlzIGEgZ29hbCBvZiB0aGUgY2xhc3Mgbm90ZXMpLgoKWW91ciBSbWFya2Rvd24gY29kZSBhbmQgeW91ciBSIGNvZGUgc2hvdWxkIGJlIHJlYWRhYmxlLCBhbmQgdGhlIFIgY29kZQpzaG91bGQgZm9sbG93IHRoZSBjb2Rpbmcgc3RhbmRhcmRzLiBUaGlzIG1ha2VzIG1haW50YWluaW5nIHlvdXIgY29kZQphbmQgZG9jdW1lbnQgZWFzaWVyLgoKCiMjIE5hbWUgYW5kIERhdGUKCk1ha2Ugc3VyZSB5b3VyIFJtYXJrZG93biBmaWxlIGhlYWRlciBjb250YWlucyBhIGBuYW1lOmAgZmllbGQgd2l0aAp5b3VyIG5hbWUuIEEgYGRhdGU6YCBmaWVsZCB3aXRoIGFuIGFwcHJvcHJpYXRlIGRhdGUgaXMgYWxzbyBoZWxwZnVsLgoKWW91ciBoZWFkZXIgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKYGBgCi0tLQp0aXRsZTogIkhXMiIKb3V0cHV0OiBodG1sX2RvY3VtZW50Cm5hbWU6ICJZb3VyICBOYW1lIgpkYXRlOiAiRmVicnVhcnkgMiwgMjAyNiIKLS0tCmBgYAoKWW91IGNhbiBhbHNvIHVzZSBvbmUgb2YgdGhlc2UgYXMgdGhlIGRhdGUgbGluZSB0byBwcm9kdWNlIHRoZSBjdXJyZW50IGRhdGUKd2hlbiB0aGUgZG9jdW1lbnQgaXMga25pdDoKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CnJpbmxpbmUgPC0gZnVuY3Rpb24oY29kZSkgewogICAgc3ByaW50ZigiYHIgJXNgIiwgY29kZSkKfQpgYGAKYGBgCmRhdGU6ICJgciByaW5saW5lKCJTeXMuRGF0ZSgpIilgIgpgYGAKYGBgCmRhdGU6ICJgciByaW5saW5lKCJmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVlLCAlWScpIilgIgpgYGAKCiMjIFJlcHJvZHVjaWJpbGl0eQoKTWFrZSBzdXJlIHlvdXIgYC5SbWRgIGZpbGUgd2lsbCBrbml0IHdpdGhvdXQgZXJyb3JzLgoKKiBFeGNlcHQgZm9yIHBhY2thZ2VzIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBub3QKICBjb250YWluZWQgaW4geW91ciByZXBvc2l0b3J5LgoKKiBZb3VyIGNvZGUgc2hvdWxkIG5vdCBhdHRlbXB0IHRvIG1ha2UgYW55IG1vZGlmaWNhdGlvbnMgb3V0c2lkZQogIHlvdXIgcmVwb3NpdG9yeSwgaW5jbHVkaW5nIGluc3RhbGxpbmcgcGFja2FnZXMuCgoKIyMgSGFuZGxpbmcgRGF0YSBGaWxlcwoKSWYgeW91ciBSbWFya2Rvd24gZG9jdW1lbnQgbWFrZXMgdXNlIG9mIGFuIGV4dGVybmFsIGRhdGEgZmlsZSB5b3UgbmVlZAp0byBtYWtlIHN1cmUgaXQgY2FuIGJlIGFjY2Vzc2VkIHdoZW4gc29tZW9uZSB5b3UgZ2l2ZSB5b3VyIHJlcG9zaXRvcnkKdG8gcmVuZGVycyB5b3VyIGZpbGUuIFRoZXJlIGFyZSBzZXZlcmFsIG9wdGlvbnM6CgoqIEluY2x1ZGUgdGhlIGZpbGUgaW4geW91ciByZXBvc2l0b3J5LiBZb3UgY2FuIHRoZW4gcmVmZXJlbmNlIGl0IGZyb20KICB5b3VyIGNvZGUgd2l0aCBhIF9yZWxhdGl2ZSBwYXRoXywgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHlvdXIKICBgUm1kYCBmaWxlLiBUaGlzIGlzIHJlYXNvbmFibGUgZm9yIHNtYWxsIGRhdGEgc2V0cyBhbmQgaXQgZnJlZXplcwogIHRoZSBkYXRhIGF0IGl0cyBjdXJyZW50IHN0YXRlLgoKKiBBY2Nlc3MgdGhlIGZpbGUgdXNpbmcgYSBVUkwuIFRoaXMgd2lsbCBsb2FkIHRoZSBmaWxlIG92ZXIgdGhlIG5ldHdvcmsKICBlYWNoIHRpbWUgeW91IHJlbmRlciB5b3VyIGRvY3VtZW50LiBZb3UgbmVlZCBhIG5ldHdvcmsgY29ubmVjdGlvbiwKICBhbmQgeW91IG1heSBjYXVzZSB1bm5lY2Vzc2FyeSB0cmFmZmljIGlmIHRoZSBmaWxlIGlzIGxhcmdlLgoKKiBDaGVjayBpZiB5b3UgaGF2ZSB0aGUgZmlsZSBsb2NhbGx5LCBhbmQgZG93bmxvYWQgaXQgaWYgeW91IGRvCiAgbm90LiBUaGlzIGlzIG9mdGVuIGEgZ29vZCBvcHRpb24gYW5kIHRoZXJlIGFyZSBzZXZlcmFsIGV4YW1wbGUgb2YKICBob3cgdG8gZG8gdGhpcyBpbiB0aGUgbm90ZXMuCgpSZWx5aW5nIG9uIHJldHJpZXZpbmcgYSBmaWxlIGZyb20gdGhlIG5ldHdvcmsgbWVhbnMgaXQgbWF5IGNoYW5nZSBvcgpiZSByZW1vdmVkLiBJbiBzb21lIGNhc2VzIHRoaXMgd2lsbCBiZSB3aGF0IHlvdSB3YW50LCBpbiBvdGhlcnMgbWF5YmUKbm90LgoKCiMjIEF2b2lkaW5nIE1lc3NhZ2VzIGFuZCBXYXJuaW5ncyBpbiBPdXRwdXQKClNvbWUgcGFja2FnZXMgcHJvZHVjZSBfbWVzc2FnZXNfIHdoZW4gdGhleSBhcmUgbG9hZGVkIGFuZCBzb21lCmNvbXB1dGF0aW9ucyBwcm9kdWNlIF9tZXNzYWdlc18gb3IgX3dhcm5pbmdzXy4gSW4gYSBmaW5hbCByZXBvcnQgeW91CnVzdWFsbHkgZG8gbm90IHdhbnQgdGhlc2UgdG8gYmUgdmlzaWJsZS4gWW91IGNhbiBzdXBwcmVzcyBtZXNzYWdlcywKbGlrZSB0aGUgb25lcyBwcm9kdWNlcyB3aGVuIGxvYWRpbmcgdGhlIGB0aWR5dmVyc2VgLCBieSBhZGRpbmcgdGhlCmNodW5rIG9wdGlvbiBgbWVzc2FnZSA9IEZBTFNFYC4gV2FybmluZ3MgY2FuIGFsc28gYmUgc3VwcHJlc3NlZCB3aXRoCnRoZSBjaHVuayBvcHRpb24gYHdhcm5pbmcgPSBGQUxTRWAsIGJ1dCBpdCBpcyB1c3VhbGx5IGJldHRlciB0byBtYWtlCnN1cmUgeW91IHVuZGVyc3RhbmQgd2hlcmUgdGhlIHdhcm5pbmdzIGFyZSBjb21pbmcgZnJvbSBhbmQgbW9kaWZ5IHlvdXIKY29kZSB0byBhdm9pZCB0aGVtIChlLmcuIGJ5IGFkZGluZyBgbmEucm0gPSBUUlVFYCB0byBzb21lIGNhbGxzKS4KCgojIyBSZW1lbWJlciB0byBQdXNoIHlvdXIgV29yawoKUmVtZW1iZXIgdG8gKipQdXNoKiogeW91ciB3b3JrIHRvIHlvdXIgVUkgR2l0TGFiIHJlcG9zaXRvcnkgYWZ0ZXIKY29tbWl0dGluZyBpdCBsb2NhbGx5LiBXZSBjYW4ndCBzZWUgaXQgdW50aWwgeW91IGRvLgoKSXQgaXMgYSBnb29kIGlkZWEgdG8gY2hlY2sgeW91ciBjbGFzcyByZXBvc2l0b3J5IG9uIHRoZSBVSSBHaXRMYWIgc2l0ZQp0byBtYWtlIHN1cmUgeW91ciBzdWJtaXNzaW9uIGlzIHRoZXJlLgoKCiMjIDEuIEF2ZXJhZ2UgSW5mYW50IE1vcnRhbGl0eSBSYXRlIENvbnRpbmVudCBpbiAyMDE1CgpUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHRoZSBhdmVyYWdlIGluZmFudCBtb3J0YWxpdHkgcmF0ZSwgaW4gZGVhdGhzCnBlciAxMDAwIGxpdmUgYmlydGhzLCBmb3IgMjAxNSBhY3Jvc3MgY291bnRyaWVzIGluIGZpdmUgY29udGluZW50cyBhcwpkZWZpbmVkIGluIHRoZSBgZ2FwbWluZGVyYCBkYXRhIHNldCBmcm9tIHRoZSBgZHNsYWJzYCBwYWNrYWdlLgoKYGBge3IsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKZGF0YShnYXBtaW5kZXIsIHBhY2thZ2UgPSAiZHNsYWJzIikKdGJsIDwtIGZpbHRlcihnYXBtaW5kZXIsIHllYXIgPT0gMjAxNSkgfD4KICAgIGdyb3VwX2J5KGNvbnRpbmVudCkgfD4KICAgIHN1bW1hcml6ZShhdmdfaW5mYW50X21vcnRhbGl0eSA9IG1lYW4oaW5mYW50X21vcnRhbGl0eSwgbmEucm0gPSBUUlVFKSkKbmFtZXModGJsKSA8LSBjKCJDb250aW5lbnQiLCAiSW5mYW50IE1vcnRhbGl0eSIpCmtibCA8LSBrbml0cjo6a2FibGUodGJsLCBkaWdpdHMgPSAxLCBmb3JtYXQgPSAiaHRtbCIpCmthYmxlRXh0cmE6OmthYmxlX3N0eWxpbmcoa2JsLCBmdWxsX3dpZHRoID0gRkFMU0UpCmBgYApJbmZhbnQgbW9ydGFsaXR5IGZvciBBZnJpY2EgaXMgc3RpbGwgcXVpdGUgYSBiaXQgaGlnaGVyIHRoYW4gZm9yIHRoZQpvdGhlciBjb250aW5lbnRzLgoKCiMjIDIuIEF2ZXJhZ2UgSW5mYW50IE1vcnRhbGl0eSBSYXRlIE92ZXIgdGhlIFllYXJzCgpUaGlzIGdyYXBoIHNob3dzIGF2ZXJhZ2UgaW5mYW50IG1vcnRhbGl0eSByYXRlcyBvdmVyIHRoZSB5ZWFycyBmb3IgdGhlIGZpdmUKY29udGluZW50cyBkZWZpbmVkIGluIHRoZSBgZ2FwbWluZGVyYCBkYXRhIHNldCBmcm9tIHRoZSBgZHNsYWJzYApwYWNrYWdlLgoKYGBge3IsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKZGF0YShnYXBtaW5kZXIsIHBhY2thZ2UgPSAiZHNsYWJzIikKYXZfbGVfeV9jIDwtCiAgICBncm91cF9ieShnYXBtaW5kZXIsIHllYXIsIGNvbnRpbmVudCkgfD4KICAgIHN1bW1hcml6ZShhdmdfaW5mYW50X21vcnRhbGl0eSA9IG1lYW4oaW5mYW50X21vcnRhbGl0eSwgbmEucm0gPSBUUlVFKSkKZ2dwbG90KGF2X2xlX3lfYywgYWVzKHggPSB5ZWFyLCB5ID0gYXZnX2luZmFudF9tb3J0YWxpdHksIGNvbG9yID0gY29udGluZW50KSkgKwogICAgZ2VvbV9saW5lKG5hLnJtID0gVFJVRSkKYGBgCgpBbGwgY29udGluZW50cyBzaG93IGEgZGVjcmVhc2UgaW4gaW5mYW50IG1vcnRhbGl0eSBvdmVyIHRpbWUuICBUaGUKY3VydmUgZm9yIEFmcmljYSBpcyBub3RpY2VhYmx5IGhpZ2hlciB0aGFuIHRoZSBjdXJ2ZXMgZm9yIHRoZSBvdGhlcgpjb250aW5lbnRzLiBUaGUgYnVtcCBmb3IgMTk5MC0yMDAwIGluIHRoZSBBZnJpY2EgY3VydmUgcmVmbGVjdHMgZmFtaW5lCmV2ZW50cyBhbmQgY29uZmxpY3RzIGluIEFmcmljYSBkdXJpbmcgdGhlc2UgeWVhcnMuCgoKIyMgMy4gTWF1bmEgTG9hIEF0bW9zcGhlcmljIENPJF8yJCBDb25jZW50cmF0aW9uCgpUaGlzIHBsb3Qgc2hvd3MgdGhlIHllYXJseSBhdmVyYWdlIENPJF8yJCBjb25jZW50cmF0aW9uIG1lYXN1cmVkIGF0CnRoZSBNYXVuYSBMb2EgT2JzZXJ2YXRvcnkgaW4gSGF3YWlpLiBNZWFzdXJlbWVudHMgYXJlIGluIHBhcnRzIHBlcgptaWxsaW9uLgoKYGBge3IsIGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKdXJsIDwtICJodHRwczovL3d3dy5zdGF0LnVpb3dhLmVkdS9+bHVrZS9kYXRhL2NvMi0yMDI1LmNzdiIKY28yd2lkZSA8LSByZWFkLmNzdih1cmwsIG5hLnN0cmluZyA9ICIqKioiKQoKY28ybG9uZyA8LSBwaXZvdF9sb25nZXIoY28yd2lkZSwgLXllYXIsIG5hbWVzX3RvID0gIm1vbnRoIiwgdmFsdWVzX3RvID0gImNvMiIpCgpjbzJ5ZWFyIDwtIHN1bW1hcml6ZShncm91cF9ieShjbzJsb25nLCB5ZWFyKSwgY28yID0gbWVhbihjbzIsIG5hLnJtID0gVFJVRSkpCgpnZ3Bsb3QoY28yeWVhciwgYWVzKHggPSB5ZWFyLCB5ID0gY28yKSkgKyBnZW9tX2xpbmUoKQpgYGAKCkNPJF8yJCBsZXZlbHMgaGF2ZSBiZWVuIHJpc2luZyBjb25zaXN0ZW50bHkgb3ZlciB0aGUgeWVhcnMsIHdpdGggdGhlCnJhdGUgb2YgaW5jcmVhc2UgYXBwZWFyaW5nIHRvIHJpc2Ugc2xvd2x5IGFzIHdlbGwuCg==