Why might you want to use R Notebook?

You can always annotate your code in basic R Script files - that is how I taught this class last year. But, there are some benefits to using R’s text editor platforms that allow you to combine code and output in a single file. This is an important tool for conducting literate analysis, which document every step you’ve taken in data manipulation and analysis such that anyone could follow the steps you took and arrive at the same results from the same dataset as you have. Reproducibility is a hallmark of creditable science!

R Markdown (rmd) is really useful for producing reports, particularly if these re-occur on a frequent basis without major changes in data structure or analyses. An example would be monitoring reports (e.g., NOAA annual surveys).

I have not regularly used R Markdown because I find it pretty clunky for testing short bits of code - but that’s where R Notebook comes in. R Notebook is just a type of rmd that allows you to run short code chunks nicely within the interface - it will generate the output right in your working rmd file, rather than you having to ‘knit’ the entire rmd to see if your code works. That is great if you’re like me and don’t write seamless code from the get-go! But the text language is the same as .rmd, so learning R Notebook will help you if you want to produce reports in R Markdown.

Getting started in R Notebook

The first step is to open a new R Notebook file within R Studio. Do this the same way you would open a new R Script file, but choose R Notebook instead. The file will open with a bit of template where you can title your document, and then provides some helpful hints for how to run code chunks. You can delete those comments when you finalize your notebook.

You can change the appearance of text just as you could in a word processing document, but using code (as you would in html) rather than point-and-click. Here is a R Markdown reference guide that summarizes common formatting commands.

OK, let’s now see some things that we can do with R Notebook. We will work through some of the script I wrote to get you started on Assignment 2, using my mussel length/width data. [note to Megan: here is a good place to move from the rendered html to the .rmd file]

Let’s bring in the data.

mus <- read.csv ("mcphee_mussel_data.csv", header = TRUE)

Now, make some plots!

Here, we’ll use simple plotting commands in base R. We’ll move on to ggplot soon!

Let’s look at the distribution of your first quantitative (continuous variable); mine is ‘Length’. More precisely, my variable is mus$Length, specified by the dataframe (mus) and column (Length)

Boxplots (aka ‘box and whisker’ plots) are nice way to summarize the distribution of your data. Here, we tell R to make a boxplot of the Length variable by specifying dataframe_name$column_name

boxplot (mus$Length)

This plot shows the median value (dark horizontal line) - NOT mean - and the box contains the 25th to 75th percentiles of the data (that is, the middle 50% of your data). The whiskers mark 1.5 x interquartile range (~ 2 standard deviations). Any point outside that range shows up as a single point, an ‘outlier’.

What’s missing from this plot? Axis labels! We have no idea what your boxplot is showing until you tell us. Here, we use ‘ylab’ to assign a label to the Y axis (spaces are allowed, because the label is within quotation marks).

boxplot (mus$Length, ylab = "Mussel length (mm)")

Repeat for your second quantitative variable:

boxplot (mus$Width, ylab = "Mussel width (mm)")

Is there any relationship between your two quantitative variables? XY scatterplots are good for that:

plot (x = mus$Length, y = mus$Width)

Let’s tidy up the axis labels:

plot (mus$Length, mus$Width, xlab = "Mussel length (mm)", ylab = "Mussel width (mm)")

What else can R Notebook do?

Another useful thing you can do in rmd/nb is insert tables directly from your dataframe. Generating tables in R is good practice as it will draw the values from the most current dataframe (e.g., if you did some data tidying prior to analysis such as removing obvious outliers or known errors.) It is also less error-prone than copying/pasting or retyping tables into Word (for example).

To insert tables you will need the DT package, which does not come with tidyverse. Here, we use DT to insert the mus dataframe as a searchable table:

DT::datatable (mus, caption = "Point Louisa mussels")

If you want to include nicely formatted equations, you can use MathJax.

You can even include images; e.g., if you wanted to include a photo or a screen shot to share with collaborators:

![](example_images/screen-shot1.png)

I am by no means an expert in R Markdown/Notebook - what I have just shared with you is basically all I know about it at this point! But like many things in R, just a little introductory knowledge is enough to get you rolling and to the point where you can start to find answers to more specific questions through Stack Exchange and the like.

LS0tDQp0aXRsZTogIkFuIEludHJvZHVjdGlvbiB0byBSIE5vdGVib29rIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQogIGJvZHl7DQogIGZvbnQtc2l6ZTogMTJwdDsNCn0NCjwvc3R5bGU+DQoNCjwhLS0gbGluZXMgNS05IGp1c3QgY2hhbmdlIGRlZmF1bHQgdGV4dCBzaXplOyB0aGUgbm90YXRpb24gc2hvd24gaGVyZSBpcyBob3cgeW91IHdvdWxkIGluc2VydCBhIGNvbW1lbnQgdGhhdCB3b3VsZCBub3QgcmVuZGVyIGluIHlvdXIgLnJtZCBvciAubmI7IGUuZy46IC0tPg0KPCEtLSB5b3VyIGNvbW1lbnQgaGVyZSAtLT4NCg0KDQojIyBXaHkgbWlnaHQgeW91IHdhbnQgdG8gdXNlIFIgTm90ZWJvb2s/DQpZb3UgY2FuIGFsd2F5cyBhbm5vdGF0ZSB5b3VyIGNvZGUgaW4gYmFzaWMgUiBTY3JpcHQgZmlsZXMgLSB0aGF0IGlzIGhvdyBJIHRhdWdodCB0aGlzIGNsYXNzIGxhc3QgeWVhci4gQnV0LCB0aGVyZSBhcmUgc29tZSBiZW5lZml0cyB0byB1c2luZyBSJ3MgdGV4dCBlZGl0b3IgcGxhdGZvcm1zIHRoYXQgYWxsb3cgeW91IHRvIGNvbWJpbmUgY29kZSBhbmQgb3V0cHV0IGluIGEgc2luZ2xlIGZpbGUuIFRoaXMgaXMgYW4gaW1wb3J0YW50IHRvb2wgZm9yIGNvbmR1Y3RpbmcgW2xpdGVyYXRlIGFuYWx5c2lzXSgpLCB3aGljaCBkb2N1bWVudCBldmVyeSBzdGVwIHlvdSd2ZSB0YWtlbiBpbiBkYXRhIG1hbmlwdWxhdGlvbiBhbmQgYW5hbHlzaXMgc3VjaCB0aGF0IGFueW9uZSBjb3VsZCBmb2xsb3cgdGhlIHN0ZXBzIHlvdSB0b29rIGFuZCBhcnJpdmUgYXQgdGhlIHNhbWUgcmVzdWx0cyBmcm9tIHRoZSBzYW1lIGRhdGFzZXQgYXMgeW91IGhhdmUuICoqUmVwcm9kdWNpYmlsaXR5KiogaXMgYSBoYWxsbWFyayBvZiBjcmVkaXRhYmxlIHNjaWVuY2UhDQoNCg0KW1IgTWFya2Rvd25dKGh0dHBzOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tLykgKHJtZCkgIGlzIHJlYWxseSB1c2VmdWwgZm9yIHByb2R1Y2luZyByZXBvcnRzLCBwYXJ0aWN1bGFybHkgaWYgdGhlc2UgcmUtb2NjdXIgb24gYSBmcmVxdWVudCBiYXNpcyB3aXRob3V0IG1ham9yIGNoYW5nZXMgaW4gZGF0YSBzdHJ1Y3R1cmUgb3IgYW5hbHlzZXMuIEFuIGV4YW1wbGUgd291bGQgYmUgbW9uaXRvcmluZyByZXBvcnRzIChlLmcuLCBOT0FBIGFubnVhbCBzdXJ2ZXlzKS4gDQoNCg0KSSBoYXZlIG5vdCByZWd1bGFybHkgdXNlZCBSIE1hcmtkb3duIGJlY2F1c2UgSSBmaW5kIGl0IHByZXR0eSBjbHVua3kgZm9yIHRlc3Rpbmcgc2hvcnQgYml0cyBvZiBjb2RlIC0gYnV0IHRoYXQncyB3aGVyZSBbUiBOb3RlYm9va10oaHR0cHM6Ly9ib29rZG93bi5vcmcveWlodWkvcm1hcmtkb3duL25vdGVib29rLmh0bWwpIGNvbWVzIGluLiBSIE5vdGVib29rIGlzIGp1c3QgYSB0eXBlIG9mIHJtZCB0aGF0IGFsbG93cyB5b3UgdG8gcnVuIHNob3J0IGNvZGUgY2h1bmtzIG5pY2VseSB3aXRoaW4gdGhlIGludGVyZmFjZSAtIGl0IHdpbGwgZ2VuZXJhdGUgdGhlIG91dHB1dCByaWdodCBpbiB5b3VyIHdvcmtpbmcgcm1kIGZpbGUsIHJhdGhlciB0aGFuIHlvdSBoYXZpbmcgdG8gJ2tuaXQnIHRoZSBlbnRpcmUgcm1kIHRvIHNlZSBpZiB5b3VyIGNvZGUgd29ya3MuIFRoYXQgaXMgZ3JlYXQgaWYgeW91J3JlIGxpa2UgbWUgYW5kIGRvbid0IHdyaXRlIHNlYW1sZXNzIGNvZGUgZnJvbSB0aGUgZ2V0LWdvISBCdXQgdGhlIHRleHQgbGFuZ3VhZ2UgaXMgdGhlIHNhbWUgYXMgLnJtZCwgc28gbGVhcm5pbmcgUiBOb3RlYm9vayB3aWxsIGhlbHAgeW91IGlmIHlvdSB3YW50IHRvIHByb2R1Y2UgcmVwb3J0cyBpbiBSIE1hcmtkb3duLg0KDQoNCiMjIEdldHRpbmcgc3RhcnRlZCBpbiBSIE5vdGVib29rDQpUaGUgZmlyc3Qgc3RlcCBpcyB0byBvcGVuIGEgbmV3IFIgTm90ZWJvb2sgZmlsZSB3aXRoaW4gUiBTdHVkaW8uIERvIHRoaXMgdGhlIHNhbWUgd2F5IHlvdSB3b3VsZCBvcGVuIGEgbmV3IFIgU2NyaXB0IGZpbGUsIGJ1dCBjaG9vc2UgUiBOb3RlYm9vayBpbnN0ZWFkLiBUaGUgZmlsZSB3aWxsIG9wZW4gd2l0aCBhIGJpdCBvZiB0ZW1wbGF0ZSB3aGVyZSB5b3UgY2FuIHRpdGxlIHlvdXIgZG9jdW1lbnQsIGFuZCB0aGVuIHByb3ZpZGVzIHNvbWUgaGVscGZ1bCBoaW50cyBmb3IgaG93IHRvIHJ1biBjb2RlIGNodW5rcy4gWW91IGNhbiBkZWxldGUgdGhvc2UgY29tbWVudHMgd2hlbiB5b3UgZmluYWxpemUgeW91ciBub3RlYm9vay4NCg0KDQpZb3UgY2FuIGNoYW5nZSB0aGUgYXBwZWFyYW5jZSBvZiB0ZXh0IGp1c3QgYXMgeW91IGNvdWxkIGluIGEgd29yZCBwcm9jZXNzaW5nIGRvY3VtZW50LCBidXQgdXNpbmcgY29kZSAoYXMgeW91IHdvdWxkIGluIGh0bWwpIHJhdGhlciB0aGFuIHBvaW50LWFuZC1jbGljay4gSGVyZSBpcyBhIFtSIE1hcmtkb3duIHJlZmVyZW5jZSBndWlkZV0oaHR0cHM6Ly9yc3R1ZGlvLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNS8wMy9ybWFya2Rvd24tcmVmZXJlbmNlLnBkZikgdGhhdCBzdW1tYXJpemVzIGNvbW1vbiBmb3JtYXR0aW5nIGNvbW1hbmRzLg0KDQoNCk9LLCBsZXQncyBub3cgc2VlIHNvbWUgdGhpbmdzIHRoYXQgd2UgY2FuIGRvIHdpdGggUiBOb3RlYm9vay4gV2Ugd2lsbCB3b3JrIHRocm91Z2ggc29tZSBvZiB0aGUgc2NyaXB0IEkgd3JvdGUgdG8gZ2V0IHlvdSBzdGFydGVkIG9uIEFzc2lnbm1lbnQgMiwgdXNpbmcgbXkgbXVzc2VsIGxlbmd0aC93aWR0aCBkYXRhLiBbKipub3RlIHRvIE1lZ2FuKio6IGhlcmUgaXMgYSBnb29kIHBsYWNlIHRvIG1vdmUgZnJvbSB0aGUgcmVuZGVyZWQgaHRtbCB0byB0aGUgLnJtZCBmaWxlXQ0KDQpMZXQncyBicmluZyBpbiB0aGUgZGF0YS4NCmBgYHtyfQ0KbXVzIDwtIHJlYWQuY3N2ICgibWNwaGVlX211c3NlbF9kYXRhLmNzdiIsIGhlYWRlciA9IFRSVUUpDQpgYGANCg0KDQojIyBOb3csIG1ha2Ugc29tZSBwbG90cyENCkhlcmUsIHdlJ2xsIHVzZSBzaW1wbGUgcGxvdHRpbmcgY29tbWFuZHMgaW4gYmFzZSBSLiBXZSdsbCBtb3ZlIG9uIHRvIGdncGxvdCBzb29uIQ0KDQpMZXQncyBsb29rIGF0IHRoZSBkaXN0cmlidXRpb24gb2YgeW91ciBmaXJzdCBxdWFudGl0YXRpdmUgKGNvbnRpbnVvdXMgdmFyaWFibGUpOyBtaW5lIGlzICdMZW5ndGgnLiBNb3JlIHByZWNpc2VseSwgbXkgdmFyaWFibGUgaXMgbXVzJExlbmd0aCwgc3BlY2lmaWVkIGJ5IHRoZSBkYXRhZnJhbWUgKG11cykgYW5kIGNvbHVtbiAoTGVuZ3RoKQ0KDQpCb3hwbG90cyAoYWthICdib3ggYW5kIHdoaXNrZXInIHBsb3RzKSBhcmUgbmljZSB3YXkgdG8gc3VtbWFyaXplIHRoZSBkaXN0cmlidXRpb24gb2YgeW91ciBkYXRhLiBIZXJlLCB3ZSB0ZWxsIFIgdG8gbWFrZSBhIGJveHBsb3Qgb2YgdGhlIExlbmd0aCB2YXJpYWJsZSBieSBzcGVjaWZ5aW5nIGRhdGFmcmFtZV9uYW1lJGNvbHVtbl9uYW1lDQpgYGB7cn0NCmJveHBsb3QgKG11cyRMZW5ndGgpDQpgYGANCg0KVGhpcyBwbG90IHNob3dzIHRoZSAqKm1lZGlhbioqIHZhbHVlIChkYXJrIGhvcml6b250YWwgbGluZSkgLSBOT1QgbWVhbiAtIGFuZCB0aGUgYm94IGNvbnRhaW5zIHRoZSAyNXRoIHRvIDc1dGggcGVyY2VudGlsZXMgb2YgdGhlIGRhdGEgKHRoYXQgaXMsIHRoZSBtaWRkbGUgNTAlIG9mIHlvdXIgZGF0YSkuIFRoZSB3aGlza2VycyBtYXJrIDEuNSB4IGludGVycXVhcnRpbGUgcmFuZ2UgKH4gMiBzdGFuZGFyZCBkZXZpYXRpb25zKS4gQW55IHBvaW50IG91dHNpZGUgdGhhdCByYW5nZSBzaG93cyB1cCBhcyBhIHNpbmdsZSBwb2ludCwgYW4gJ291dGxpZXInLg0KDQoNCldoYXQncyBtaXNzaW5nIGZyb20gdGhpcyBwbG90PyBBeGlzIGxhYmVscyEgV2UgaGF2ZSBubyBpZGVhIHdoYXQgeW91ciBib3hwbG90IGlzIHNob3dpbmcgdW50aWwgeW91IHRlbGwgdXMuIEhlcmUsIHdlIHVzZSAneWxhYicgdG8gYXNzaWduIGEgbGFiZWwgdG8gdGhlIFkgYXhpcyAoc3BhY2VzIGFyZSBhbGxvd2VkLCBiZWNhdXNlIHRoZSBsYWJlbCBpcyB3aXRoaW4gcXVvdGF0aW9uIG1hcmtzKS4NCmBgYHtyfQ0KYm94cGxvdCAobXVzJExlbmd0aCwgeWxhYiA9ICJNdXNzZWwgbGVuZ3RoIChtbSkiKQ0KYGBgDQoNClJlcGVhdCBmb3IgeW91ciBzZWNvbmQgcXVhbnRpdGF0aXZlIHZhcmlhYmxlOg0KYGBge3J9DQpib3hwbG90IChtdXMkV2lkdGgsIHlsYWIgPSAiTXVzc2VsIHdpZHRoIChtbSkiKQ0KYGBgDQoNCklzIHRoZXJlIGFueSByZWxhdGlvbnNoaXAgYmV0d2VlbiB5b3VyIHR3byBxdWFudGl0YXRpdmUgdmFyaWFibGVzPyBYWSBzY2F0dGVycGxvdHMgYXJlIGdvb2QgZm9yIHRoYXQ6DQpgYGB7cn0NCnBsb3QgKHggPSBtdXMkTGVuZ3RoLCB5ID0gbXVzJFdpZHRoKQ0KYGBgDQoNCkxldCdzIHRpZHkgdXAgdGhlIGF4aXMgbGFiZWxzOg0KYGBge3J9DQpwbG90IChtdXMkTGVuZ3RoLCBtdXMkV2lkdGgsIHhsYWIgPSAiTXVzc2VsIGxlbmd0aCAobW0pIiwgeWxhYiA9ICJNdXNzZWwgd2lkdGggKG1tKSIpDQpgYGANCg0KIyBXaGF0IGVsc2UgY2FuIFIgTm90ZWJvb2sgZG8/DQpBbm90aGVyIHVzZWZ1bCB0aGluZyB5b3UgY2FuIGRvIGluIHJtZC9uYiBpcyBpbnNlcnQgdGFibGVzIGRpcmVjdGx5IGZyb20geW91ciBkYXRhZnJhbWUuIEdlbmVyYXRpbmcgdGFibGVzIGluIFIgaXMgZ29vZCBwcmFjdGljZSBhcyBpdCB3aWxsIGRyYXcgdGhlIHZhbHVlcyBmcm9tIHRoZSBtb3N0IGN1cnJlbnQgZGF0YWZyYW1lIChlLmcuLCBpZiB5b3UgZGlkIHNvbWUgZGF0YSB0aWR5aW5nIHByaW9yIHRvIGFuYWx5c2lzIHN1Y2ggYXMgcmVtb3Zpbmcgb2J2aW91cyBvdXRsaWVycyBvciBrbm93biBlcnJvcnMuKSBJdCBpcyBhbHNvIGxlc3MgZXJyb3ItcHJvbmUgdGhhbiBjb3B5aW5nL3Bhc3Rpbmcgb3IgcmV0eXBpbmcgdGFibGVzIGludG8gV29yZCAoZm9yIGV4YW1wbGUpLg0KDQpUbyBpbnNlcnQgdGFibGVzIHlvdSB3aWxsIG5lZWQgdGhlIFtEVCBwYWNrYWdlXShodHRwczovL3JzdHVkaW8uZ2l0aHViLmlvL0RULyksIHdoaWNoIGRvZXMgbm90IGNvbWUgd2l0aCB0aWR5dmVyc2UuIEhlcmUsIHdlIHVzZSBEVCB0byBpbnNlcnQgdGhlIG11cyBkYXRhZnJhbWUgYXMgYSBzZWFyY2hhYmxlIHRhYmxlOg0KDQpgYGB7cn0NCkRUOjpkYXRhdGFibGUgKG11cywgY2FwdGlvbiA9ICJQb2ludCBMb3Vpc2EgbXVzc2VscyIpDQpgYGANCg0KSWYgeW91IHdhbnQgdG8gaW5jbHVkZSBuaWNlbHkgZm9ybWF0dGVkIGVxdWF0aW9ucywgeW91IGNhbiB1c2UgW01hdGhKYXhdKGh0dHBzOi8vbWF0aC5tZXRhLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy81MDIwL21hdGhqYXgtYmFzaWMtdHV0b3JpYWwtYW5kLXF1aWNrLXJlZmVyZW5jZSkuDQoNCllvdSBjYW4gZXZlbiBpbmNsdWRlIGltYWdlczsgZS5nLiwgaWYgeW91IHdhbnRlZCB0byBpbmNsdWRlIGEgcGhvdG8gb3IgYSBzY3JlZW4gc2hvdCB0byBzaGFyZSB3aXRoIGNvbGxhYm9yYXRvcnM6DQoNCmBgYA0KIVtdKGV4YW1wbGVfaW1hZ2VzL3NjcmVlbi1zaG90MS5wbmcpDQpgYGANCg0KIVtdKGV4YW1wbGVfaW1hZ2VzL3NjcmVlbi1zaG90MS5wbmcpDQoNCkkgYW0gYnkgbm8gbWVhbnMgYW4gZXhwZXJ0IGluIFIgTWFya2Rvd24vTm90ZWJvb2sgLSB3aGF0IEkgaGF2ZSBqdXN0IHNoYXJlZCB3aXRoIHlvdSBpcyBiYXNpY2FsbHkgYWxsIEkga25vdyBhYm91dCBpdCBhdCB0aGlzIHBvaW50ISBCdXQgbGlrZSBtYW55IHRoaW5ncyBpbiBSLCBqdXN0IGEgbGl0dGxlIGludHJvZHVjdG9yeSBrbm93bGVkZ2UgaXMgZW5vdWdoIHRvIGdldCB5b3Ugcm9sbGluZyBhbmQgdG8gdGhlIHBvaW50IHdoZXJlIHlvdSBjYW4gc3RhcnQgdG8gZmluZCBhbnN3ZXJzIHRvIG1vcmUgc3BlY2lmaWMgcXVlc3Rpb25zIHRocm91Z2ggU3RhY2sgRXhjaGFuZ2UgYW5kIHRoZSBsaWtlLg0KDQo=