Files and Folders
It is essential that you name your folders and files exactly as specified. We will run checks like
cd HW1
Rscript -e 'rmarkdown::render("hw1.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.
Consistent file naming is often an important part of a data analysis project. Consistent use of upper and lower case letters is important for an analysis to be reproducible. These may seem like small issues, but if your files do not use the conventions your code expects then the code will fail.
There are two kinds of file systems in common use:
Case preserving but case insensitive (Windows, most Mac OS): If you create a file as hw1.Rmd
it will be shown with this spelling, but you can also access it with the name Hw1.rMd
and other case variations.
Case sensitive (some Mac OS, Linux): You can have separate files named hw1.Rmd
and Hw1.rMd
.
To make your work as reproducible as possible:
Always use the same naming and case conventions, even on a case insensitive system.
Never create two files with names that differ only in case, even if your file system is case sensitive and allows this.
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.
For now, if your submission does not knit successfully on our test systems (the CLAS Linux systems) we will:
- Fix your
.Rmd
file, commit the changes, and push them to your UI GitLab repository.
- Open an issue on GitLab notifying you of the change. The issue is assigned to you, which generates an email to you.
- You will need to pull our changes to bring them into your local repository.
- There will of course be a deduction if we have to do this.
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 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.
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).
You can use chunk options to hide code and show only results. For example, the chunk
```{r, echo = FALSE}
hist(faithful$waiting)
```
will show only the plot and not the code.
Numbers in your text inserted with inline code and numbers in tables should be rounded to an appropriate number of decimals. The round
function can be used in inline code. The kable
functions have options for controlling the number of digits.
Your homework solutions should use the same headers as the assignment to make it easier to grade. The assignment problem headers are all level two headers, created by starting a line with ##
.
The text should be all your own, not stray material from templates.
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 useful.
Your header should look something like this:
---
title: "Assignment 1"
output: html_document
name: "Your Name"
date: "January 24, 2024"
---
The template shows a way to have the current date inserted.
The following is a sample solution.
1. Average Waiting Time Between Eruptions
The average waiting time between eruptions of the Old Faithful geyser in the data set faithful
is 70.9 minutes.
2. First Four Eruption Durations
The first four eruption durations can be computed using by using the $
operator to extract the eruptions
variable, and then the subset operator to get the subset of the first four observations:
faithful$eruptions[1 : 4]
## [1] 3.600 1.800 3.333 2.283
3. First Five Records of the Eruptions Data
The following table shows the first five eruption durations and waiting times to the subsequent eruption for the Old Faithful geyser recorded in the faithful
data frame. Times are in minutes.
eruptions
|
waiting
|
3.60
|
79
|
1.80
|
54
|
3.33
|
74
|
2.28
|
62
|
4.53
|
85
|
4. Histogram of Eruption Durations
The following plot shows a histogram of the eruption durations for the faithful
data set.
The distribution appears to be bimodal, with one mode around 2 minutes and one around 4.5 minutes.
LS0tCnRpdGxlOiAiQXNzaWdubWVudCAxIE5vdGVzIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCi0tLQoKYGBge3IgZ2xvYmFsX29wdGlvbnMsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGNvbGxhcHNlID0gVFJVRSkKYGBgCgojIyBGaWxlcyBhbmQgRm9sZGVycwoKSXQgaXMgZXNzZW50aWFsIHRoYXQgeW91IG5hbWUgeW91ciBmb2xkZXJzIGFuZCBmaWxlcyAqKmV4YWN0bHkqKiBhcwpzcGVjaWZpZWQuIFdlIHdpbGwgcnVuIGNoZWNrcyBsaWtlCmBgYHNoZWxsCmNkIEhXMQpSc2NyaXB0IC1lICdybWFya2Rvd246OnJlbmRlcigiaHcxLlJtZCIpJwpgYGAKZnJvbSB0aGUgdG9wIG9mIGEgY2xvbmUgb2YgeW91ciByZXBvc2l0b3J5LiBJZiB0aGUgZm9sZGVycwphbmQgZmlsZXMgYXJlIG5vdCBuYW1lZCAqKmV4YWN0bHkqKiBhcyBzcGVjaWZpZWQgdGhlc2UgY2hlY2tzIHdpbGwgZmFpbC4KCkNvbnNpc3RlbnQgZmlsZSBuYW1pbmcgaXMgb2Z0ZW4gYW4gaW1wb3J0YW50IHBhcnQgb2YgYSBkYXRhIGFuYWx5c2lzCnByb2plY3QuICBDb25zaXN0ZW50IHVzZSBvZiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzIGlzIGltcG9ydGFudApmb3IgYW4gYW5hbHlzaXMgdG8gYmUgcmVwcm9kdWNpYmxlLiAgVGhlc2UgbWF5IHNlZW0gbGlrZSBzbWFsbCBpc3N1ZXMsCmJ1dCBpZiB5b3VyIGZpbGVzIGRvIG5vdCB1c2UgdGhlIGNvbnZlbnRpb25zIHlvdXIgY29kZSBleHBlY3RzIHRoZW4KdGhlIGNvZGUgd2lsbCBmYWlsLgoKVGhlcmUgYXJlIHR3byBraW5kcyBvZiBmaWxlIHN5c3RlbXMgaW4gY29tbW9uIHVzZToKCiogKipDYXNlIHByZXNlcnZpbmcgYnV0IGNhc2UgaW5zZW5zaXRpdmUqKiAoV2luZG93cywgbW9zdCBNYWMgT1MpOiBJZiB5b3UKICBjcmVhdGUgYSBmaWxlIGFzIGBodzEuUm1kYCBpdCB3aWxsIGJlIHNob3duIHdpdGggdGhpcyBzcGVsbGluZywgYnV0CiAgeW91IGNhbiBhbHNvIGFjY2VzcyBpdCB3aXRoIHRoZSBuYW1lIGBIdzEuck1kYCBhbmQgb3RoZXIgY2FzZQogIHZhcmlhdGlvbnMuCgoqICoqQ2FzZSBzZW5zaXRpdmUqKiAoc29tZSBNYWMgT1MsIExpbnV4KTogWW91IGNhbiBoYXZlIHNlcGFyYXRlIGZpbGVzCiAgbmFtZWQgYGh3MS5SbWRgIGFuZCBgSHcxLnJNZGAuCiAgClRvIG1ha2UgeW91ciB3b3JrIGFzIHJlcHJvZHVjaWJsZSBhcyBwb3NzaWJsZToKCiogKipBbHdheXMqKiB1c2UgdGhlIHNhbWUgbmFtaW5nIGFuZCBjYXNlIGNvbnZlbnRpb25zLCBldmVuIG9uIGEgY2FzZQogIGluc2Vuc2l0aXZlIHN5c3RlbS4KCiogKipOZXZlcioqIGNyZWF0ZSB0d28gZmlsZXMgd2l0aCBuYW1lcyB0aGF0IGRpZmZlciBvbmx5IGluIGNhc2UsIGV2ZW4KICBpZiB5b3VyIGZpbGUgc3lzdGVtIGlzIGNhc2Ugc2Vuc2l0aXZlIGFuZCBhbGxvd3MgdGhpcy4KCgojIyBSZXByb2R1Y2liaWxpdHkKCk1ha2Ugc3VyZSB5b3VyIGAuUm1kYCBmaWxlIHdpbGwga25pdCB3aXRob3V0IGVycm9ycy4KCiAgKiBFeGNlcHQgZm9yIHBhY2thZ2VzIHlvdXIgY29kZSBzaG91bGQgbm90IGRlcGVuZCBvbiBhbnl0aGluZyBub3QKICAgIGNvbnRhaW5lZCBpbiB5b3VyIHJlcG9zaXRvcnkuCgogICogWW91ciBjb2RlIHNob3VsZCBub3QgYXR0ZW1wdCB0byBtYWtlIGFueSBtb2RpZmljYXRpb25zIG91dHNpZGUKICAgIHlvdXIgcmVwb3NpdG9yeSwgaW5jbHVkaW5nIGluc3RhbGxpbmcgcGFja2FnZXMuCgpGb3Igbm93LCBpZiB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3Qga25pdCBzdWNjZXNzZnVsbHkgb24gb3VyIHRlc3QKc3lzdGVtcyAodGhlIFtDTEFTIExpbnV4IHN5c3RlbXNdKGh0dHBzOi8vZmFzdHguZGl2bXMudWlvd2EuZWR1KSkgd2UKd2lsbDoKCiAgKiBGaXggeW91ciBgLlJtZGAgZmlsZSwgY29tbWl0IHRoZSBjaGFuZ2VzLCBhbmQgcHVzaCB0aGVtIHRvIHlvdXIKICAgIFVJIEdpdExhYiByZXBvc2l0b3J5LgogICogT3BlbiBhbiBfaXNzdWVfIG9uIEdpdExhYiBub3RpZnlpbmcgeW91IG9mIHRoZSBjaGFuZ2UuIFRoZSBpc3N1ZQogICAgaXMgX2Fzc2lnbmVkXyB0byB5b3UsIHdoaWNoIGdlbmVyYXRlcyBhbiBlbWFpbCB0byB5b3UuCiAgKiBZb3Ugd2lsbCBuZWVkIHRvIHB1bGwgb3VyIGNoYW5nZXMgdG8gYnJpbmcgdGhlbSBpbnRvIHlvdXIgbG9jYWwKICAgIHJlcG9zaXRvcnkuCiAgKiBUaGVyZSB3aWxsIG9mIGNvdXJzZSBiZSBhIGRlZHVjdGlvbiBpZiB3ZSBoYXZlIHRvIGRvIHRoaXMuCgoKIyMgUm1hcmtkb3duIFVzYWdlIGFuZCBDb2RpbmcgU3R5bGUKCk1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIFJtYXJrZG93biBwcm9wZXJseSwgd2l0aCBleHBsYW5hdG9yeSB0ZXh0cwpzdXJyb3VuZGluZyBzaG9ydCBjb2RlIGNodW5rcy4gSW4gcGFydGljdWxhciB5b3Ugc2hvdWxkIG5vdCBoYXZlIGp1c3QKb25lIGJpZyBjb2RlIGNodW5rLgoKICAqIFlvdXIgUm1hcmtkb3duIGNvZGUgYW5kIHlvdXIgUiBjb2RlIHNob3VsZCBiZSByZWFkYWJsZSwgYW5kIHRoZSBSCiAgICBjb2RlIHNob3VsZCBmb2xsb3cgdGhlIFtjb2Rpbmcgc3RhbmRhcmRzXShjb2RpbmcuaHRtbCkuIFRoaXMgbWFrZXMKICAgIG1haW50YWluaW5nIHlvdXIgY29kZSBhbmQgZG9jdW1lbnQgZWFzaWVyLgoKICAqIFlvdXIgcmVuZGVyZWQgSFRNTCBwYWdlIHNob3VsZCBiZSBhIHJlcG9ydCB3aXRoIHRleHQgc3VwcG9ydGluZwogICAgbnVtZXJpY2FsIGFuZCBncmFwaGljYWwgcmVzdWx0cy4gQ29kZSBvbmx5IG5lZWRzIHRvIGJlIHZpc2libGUgaWYKICAgIHlvdSBhcmUgZXhwbGFpbmluZyBob3cgdG8gZG8gc29tZXRoaW5nICh3aGljaCBpcyBhIGdvYWwgb2YgdGhlIGNsYXNzCiAgICBub3RlcykuCgogICAgWW91IGNhbiB1c2UgY2h1bmsgb3B0aW9ucyB0byBoaWRlIGNvZGUgYW5kIHNob3cgb25seSByZXN1bHRzLiBGb3IKICAgIGV4YW1wbGUsIHRoZSBjaHVuawoKICAgIDwhLS0gc3ludGF4IGZyb20gaHR0cHM6Ly95aWh1aS5uYW1lL2VuLzIwMTcvMTEva25pdHItdmVyYmF0aW0tY29kZS1jaHVuay8gLS0+CiAgICBgYGBgCmBgYHtyLCBlY2hvID0gRkFMU0V9YHIgJydgCmhpc3QoZmFpdGhmdWwkd2FpdGluZykKYGBgCiAgICBgYGBgCgogICAgd2lsbCBzaG93IG9ubHkgdGhlIHBsb3QgYW5kIG5vdCB0aGUgY29kZS4KCiAgKiBOdW1iZXJzIGluIHlvdXIgdGV4dCBpbnNlcnRlZCB3aXRoIGlubGluZSBjb2RlIGFuZCBudW1iZXJzIGluCiAgICB0YWJsZXMgc2hvdWxkIGJlIHJvdW5kZWQgdG8gYW4gYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGRlY2ltYWxzLiBUaGUKICAgIGByb3VuZGAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgaW4gaW5saW5lIGNvZGUuIFRoZSBga2FibGVgIGZ1bmN0aW9ucwogICAgaGF2ZSBvcHRpb25zIGZvciBjb250cm9sbGluZyB0aGUgbnVtYmVyIG9mIGRpZ2l0cy4KCiAgKiBZb3VyIGhvbWV3b3JrIHNvbHV0aW9ucyBzaG91bGQgdXNlIHRoZSBzYW1lIGhlYWRlcnMgYXMgdGhlCiAgICBhc3NpZ25tZW50IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGdyYWRlLiBUaGUgYXNzaWdubWVudCBwcm9ibGVtCiAgICBoZWFkZXJzIGFyZSBhbGwgbGV2ZWwgdHdvIGhlYWRlcnMsIGNyZWF0ZWQgYnkgc3RhcnRpbmcgYSBsaW5lIHdpdGgKICAgIGAjI2AuCgogICogVGhlIHRleHQgc2hvdWxkIGJlIGFsbCB5b3VyIG93biwgbm90IHN0cmF5IG1hdGVyaWFsIGZyb20gdGVtcGxhdGVzLgoKCiMjIE5hbWUgYW5kIERhdGUKCk1ha2Ugc3VyZSB5b3VyIFJtYXJrZG93biBmaWxlIGhlYWRlciBjb250YWlucyBhIGBuYW1lOmAgZmllbGQgd2l0aAp5b3VyIG5hbWU7IGEgYGRhdGU6YCBmaWVsZCB3aXRoIGFuIGFwcHJvcHJpYXRlIGRhdGUgaXMgYWxzbyB1c2VmdWwuCgpZb3VyIGhlYWRlciBzaG91bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgpgYGAKLS0tCnRpdGxlOiAiQXNzaWdubWVudCAxIgpvdXRwdXQ6IGh0bWxfZG9jdW1lbnQKbmFtZTogIllvdXIgIE5hbWUiCmRhdGU6ICJKYW51YXJ5IDI0LCAyMDI0IgotLS0KYGBgCgpUaGUgW3RlbXBsYXRlXShod3RlbXAuUm1kKSBzaG93cyBhIHdheSB0byBoYXZlIHRoZSBjdXJyZW50IGRhdGUgaW5zZXJ0ZWQuCgpUaGUgZm9sbG93aW5nIGlzIGEgc2FtcGxlIHNvbHV0aW9uLgoKCiMjIDEuIEF2ZXJhZ2UgV2FpdGluZyBUaW1lIEJldHdlZW4gRXJ1cHRpb25zCgpUaGUgYXZlcmFnZSB3YWl0aW5nIHRpbWUgYmV0d2VlbiBlcnVwdGlvbnMgb2YgdGhlIF9PbGQgRmFpdGhmdWxfIGdleXNlcgppbiB0aGUgZGF0YSBzZXQgYGZhaXRoZnVsYCBpcyBgciByb3VuZChtZWFuKGZhaXRoZnVsJHdhaXRpbmcpLCAyKWAgbWludXRlcy4KCgojIyAyLiBGaXJzdCBGb3VyIEVydXB0aW9uIER1cmF0aW9ucwoKVGhlIGZpcnN0IGZvdXIgZXJ1cHRpb24gZHVyYXRpb25zIGNhbiBiZSBjb21wdXRlZCB1c2luZyBieSB1c2luZyB0aGUKYCRgIG9wZXJhdG9yIHRvIGV4dHJhY3QgdGhlIGBlcnVwdGlvbnNgIHZhcmlhYmxlLCBhbmQgdGhlbiB0aGUgc3Vic2V0Cm9wZXJhdG9yIHRvIGdldCB0aGUgc3Vic2V0IG9mIHRoZSBmaXJzdCBmb3VyIG9ic2VydmF0aW9uczoKCmBgYHtyfQpmYWl0aGZ1bCRlcnVwdGlvbnNbMSA6IDRdCmBgYAoKIyMgMy4gRmlyc3QgRml2ZSBSZWNvcmRzIG9mIHRoZSBFcnVwdGlvbnMgRGF0YQoKVGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyB0aGUgZmlyc3QgZml2ZSBlcnVwdGlvbiBkdXJhdGlvbnMgYW5kCndhaXRpbmcgdGltZXMgdG8gdGhlIHN1YnNlcXVlbnQgZXJ1cHRpb24gZm9yIHRoZSBfT2xkIEZhaXRoZnVsXyBnZXlzZXIKcmVjb3JkZWQgaW4gdGhlIGBmYWl0aGZ1bGAgZGF0YSBmcmFtZS4gVGltZXMgYXJlIGluIG1pbnV0ZXMuCgpgYGB7ciwgZWNobyA9IEZBTFNFfQojIyB0aGUgZGlnaXRzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGF0IHRoZSBkYXRhIHNob3VsZCBiZSByb3VuZGVkCmtibCA8LSBrbml0cjo6a2FibGUoaGVhZChmYWl0aGZ1bCwgNSksIGRpZ2l0cyA9IDIsIGZvcm1hdCA9ICJodG1sIikKa2FibGVFeHRyYTo6a2FibGVfc3R5bGluZyhrYmwsIGZ1bGxfd2lkdGggPSBGQUxTRSkKYGBgCgojIyA0LiBIaXN0b2dyYW0gb2YgRXJ1cHRpb24gRHVyYXRpb25zCgpUaGUgZm9sbG93aW5nIHBsb3Qgc2hvd3MgYSBoaXN0b2dyYW0gb2YgdGhlIGVydXB0aW9uIGR1cmF0aW9ucyBmb3IKdGhlIGBmYWl0aGZ1bGAgZGF0YSBzZXQuCgpgYGB7ciwgZWNobyA9IEZBTFNFfQpoaXN0KGZhaXRoZnVsJGVydXB0aW9ucykKYGBgCgpUaGUgZGlzdHJpYnV0aW9uIGFwcGVhcnMgdG8gYmUgYmltb2RhbCwgd2l0aCBvbmUgbW9kZSBhcm91bmQgMiBtaW51dGVzCmFuZCBvbmUgYXJvdW5kIDQuNSBtaW51dGVzLgo=