What is RMarkdown?

RMarkdown combines three distinct elements:

  1. markdown - a language for typesetting
  2. knitr - an package for creating documents from markdown
  3. pandoc - a tool for converting one format into another

Cheatsheet

Come and get it!

Writing text

Here is some text.

Here is some italicized text. Here is some bold text. How about bold and italicized! No underlining unfortunately.

Here’s a link to a fun webpage

Let’s write something very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, long. It’s all in the same paragraph!

This is a new paragraph because there’s a blank line between the two blocks of text.

Markdown doesn’t care if there are a few lines between the text, it just starts a new paragraph.

Here’s a pretty picture!

Captions are nice: Sleepy koala image.

Projects

Now is a good time to talk about folders/directories and projects.

You could use setwd() to set a working directory. But it makes sharing hard because everyone organizes their folders/directories/work differently. Working in projects ensures that everyone gets the same folder structures and relative references are preserved.

TL;DR Use projects

Comments

Comments are helpful for sending messages and reminders to your future readers (and self!)

Headers

Slightly smaller header (Header 2)

Header 3 ()

Some ordered lists

Here is a numbered list.

  1. Here is a numbered item
  2. Another one
    1. Sub number
      1. Add 2x TABS to begin a new sub-list
      2. Woo hoo!
    2. Next number
  3. Here is another item
  4. I wrote this third
  5. Markdown isn’t actually paying attention to the numbers.
  1. It does however begin new lists if there are letter items.
  2. But then it stops paying attention again
  1. You can start new lists at any arbitrary number or letter
  2. But what follows is sequential

Unordered lists

Here is bulleted list:

  • Is bulleted a word?

  • Here is a bulleted item an item with a first level bullet

  • RMarkdown recognizes ’*‘,’+‘, and’-’ for bullets

  • And once you’ve started ,it doesn’t care what you use

    • It cares about indentation
    • A second level item
      • A third level item

Including R code

Let’s allow for some R code

Default version:

3+2

We can use a chunk options like echo = FALSE to prevent code from appearing in the output.

This is especially helpful when you are drawing charts or presenting statistics. No one needs to see all that.

For class, I like to include (echo) the code, but I don’t want it to evaluate so I set eval = FALSE.

50+20

You can also include inline calculations. What is the square-root of two? Easy peasy. 1.4142136. R never includes the code itself inline, just the output.

By the way, you can output your work as a PDF, Word Document, or HTML note book. You can even make slides.

Tables

Tables aren’t much fun. It’s much more convenient to use kable (from knitr) to format your dataframes.

library(knitr)
kable(head(mtcars))

Notice how we used head() there? It’s so we don’t take up the whole page with a table!

We can create paged tables using paged_table() from the rmarkdown package

library(rmarkdown)
paged_table(mtcars)

Notice the sideways scrolling action, too.

Just for fun

I’m getting into emojis.

library(emojifont)
search_emoji("smile")

R makes me 😄 😃 😅 like a 😺 who is 😸

Your turn

Create a new RMarkdown document to describe your last vacation. Be sure to try out the headers, include some different style fonts, and bulleted lists lists with bullets. Try including a picture and some math.

LS0tDQp0aXRsZTogIkludHJvZHVjaW5nIFJNYXJrZG93biINCmF1dGhvcjogIkVucmljbyBNYW5sYXBpZyINCmRhdGU6ICIwMS0wMS0yMDIxIg0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rDQotLS0NCg0KPCEtLSANClRoaXMgc3R1ZmYgaXMgY2FsbGVkIHRoZSBZQU1MIA0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGZpZ19jYXB0aW9uOiBUUlVFDQogICAgdGhlbWU6IGNlcnVsZWFuDQotLT4NCiMgV2hhdCBpcyBSTWFya2Rvd24/DQoNClJNYXJrZG93biBjb21iaW5lcyB0aHJlZSBkaXN0aW5jdCBlbGVtZW50czoNCg0KMS4gKm1hcmtkb3duKiAtIGEgbGFuZ3VhZ2UgZm9yIHR5cGVzZXR0aW5nDQoyLiAqa25pdHIqIC0gYW4gcGFja2FnZSBmb3IgY3JlYXRpbmcgZG9jdW1lbnRzIGZyb20gbWFya2Rvd24NCjMuICpwYW5kb2MqIC0gYSB0b29sIGZvciBjb252ZXJ0aW5nIG9uZSBmb3JtYXQgaW50byBhbm90aGVyDQoNCg0KIyBDaGVhdHNoZWV0DQpbQ29tZSBhbmQgZ2V0IGl0IV0oaHR0cHM6Ly93d3cucnN0dWRpby5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTUvMDMvcm1hcmtkb3duLXJlZmVyZW5jZS5wZGYpDQoNCiMgV3JpdGluZyB0ZXh0IA0KDQpIZXJlIGlzIHNvbWUgdGV4dC4NCg0KSGVyZSBpcyBzb21lICppdGFsaWNpemVkKiB0ZXh0LiAgSGVyZSBpcyBzb21lICoqYm9sZCoqIHRleHQuICBIb3cgYWJvdXQgKioqYm9sZCBhbmQgaXRhbGljaXplZCEqKiogTm8gdW5kZXJsaW5pbmcgdW5mb3J0dW5hdGVseS4NCg0KSGVyZSdzIGEgW2xpbmsgdG8gYSBmdW4gd2VicGFnZV0oaHR0cHM6Ly9saXR0bGVhbGNoZW15Mi5jb20vKQ0KDQpMZXQncyB3cml0ZSBzb21ldGhpbmcgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgdmVyeSwgDQp2ZXJ5LCANCnZlcnksIA0KdmVyeSwgDQp2ZXJ5LCANCnZlcnksIA0KbG9uZy4NCkl0J3MgYWxsIGluIHRoZSBzYW1lIHBhcmFncmFwaCENCg0KVGhpcyBpcyBhIG5ldyBwYXJhZ3JhcGggYmVjYXVzZSB0aGVyZSdzIGEgYmxhbmsgbGluZSBiZXR3ZWVuIHRoZSB0d28gYmxvY2tzIG9mIHRleHQuIA0KDQoNCg0KDQoNCg0KDQoNCg0KDQpNYXJrZG93biBkb2Vzbid0IGNhcmUgaWYgdGhlcmUgYXJlIGEgZmV3IGxpbmVzIGJldHdlZW4gdGhlIHRleHQsIGl0IGp1c3Qgc3RhcnRzIGEgbmV3IHBhcmFncmFwaC4NCg0KSGVyZSdzIGEgcHJldHR5IHBpY3R1cmUhDQoNCiFbQ2FwdGlvbnMgYXJlIG5pY2U6IFNsZWVweSBrb2FsYSBpbWFnZS4gXShpbWFnZXMvdG9waWMwMi9zbGVlcHlfa29hbGEuanBnKQ0KDQoNCg0KDQoNCg0KDQoNCiMgUHJvamVjdHMNCg0KTm93IGlzIGEgZ29vZCB0aW1lIHRvIHRhbGsgYWJvdXQgZm9sZGVycy9kaXJlY3RvcmllcyBhbmQgcHJvamVjdHMuDQoNCllvdSAqY291bGQqIHVzZSBgc2V0d2QoKWAgdG8gc2V0IGEgd29ya2luZyBkaXJlY3RvcnkuICBCdXQgaXQgbWFrZXMgc2hhcmluZyBoYXJkIGJlY2F1c2UgZXZlcnlvbmUgb3JnYW5pemVzIHRoZWlyIGZvbGRlcnMvZGlyZWN0b3JpZXMvd29yayBkaWZmZXJlbnRseS4gV29ya2luZyBpbiBwcm9qZWN0cyBlbnN1cmVzIHRoYXQgZXZlcnlvbmUgZ2V0cyB0aGUgc2FtZSBmb2xkZXIgc3RydWN0dXJlcyBhbmQgcmVsYXRpdmUgcmVmZXJlbmNlcyBhcmUgcHJlc2VydmVkLiANCg0KVEw7RFIgVXNlIHByb2plY3RzDQoNCg0KDQoNCiMgQ29tbWVudHMNCg0KQ29tbWVudHMgYXJlIGhlbHBmdWwgZm9yIHNlbmRpbmcgbWVzc2FnZXMgYW5kIHJlbWluZGVycyB0byB5b3VyIGZ1dHVyZSByZWFkZXJzIChhbmQgc2VsZiEpDQoNCjwhLS0gSGVyZSBpcyBzaG9ydCBjb21tZW50IC0tPg0KDQoNCjwhLS0gDQpBIA0KDQp2ZXJ5DQoNCmxvbmcNCg0KY29tbWVudCANCi0tPg0KDQoNCiMgSGVhZGVycyANCiMjIFNsaWdodGx5IHNtYWxsZXIgaGVhZGVyIChIZWFkZXIgMikNCg0KIyMjIEhlYWRlciAzICgpDQoNCg0KDQojIyMgU29tZSBvcmRlcmVkIGxpc3RzDQoNCkhlcmUgaXMgYSBudW1iZXJlZCBsaXN0Lg0KDQoxLiBIZXJlIGlzIGEgbnVtYmVyZWQgaXRlbQ0KMS4gQW5vdGhlciBvbmUNCiAgICAxLiBTdWIgbnVtYmVyDQogICAgICAgIDEuIEFkZCAyeCBUQUJTIHRvIGJlZ2luIGEgbmV3IHN1Yi1saXN0DQogICAgICAgIDIuIFdvbyBob28hDQogICAgMi4gTmV4dCBudW1iZXINCjIuIEhlcmUgaXMgYW5vdGhlciBpdGVtDQozLiBJIHdyb3RlIHRoaXMgdGhpcmQNCjEwMDAuIE1hcmtkb3duIGlzbid0IGFjdHVhbGx5IHBheWluZyBhdHRlbnRpb24gdG8gdGhlIG51bWJlcnMuDQoNCg0KYS4gSXQgZG9lcyBob3dldmVyIGJlZ2luIG5ldyBsaXN0cyBpZiB0aGVyZSBhcmUgbGV0dGVyIGl0ZW1zLg0KYS4gQnV0IHRoZW4gaXQgc3RvcHMgcGF5aW5nIGF0dGVudGlvbiBhZ2Fpbg0KDQoNCjI1LiBZb3UgY2FuIHN0YXJ0IG5ldyBsaXN0cyBhdCBhbnkgYXJiaXRyYXJ5IG51bWJlciBvciBsZXR0ZXINCjM5LiBCdXQgd2hhdCBmb2xsb3dzIGlzIHNlcXVlbnRpYWwNCg0KDQojIyMgVW5vcmRlcmVkIGxpc3RzDQoNCkhlcmUgaXMgYnVsbGV0ZWQgbGlzdDoNCg0KKiBJcyAqYnVsbGV0ZWQqIGEgd29yZD8NCiogSGVyZSBpcyB+fmEgYnVsbGV0ZWQgaXRlbX5+IGFuIGl0ZW0gd2l0aCBhIGZpcnN0IGxldmVsIGJ1bGxldA0KKiBSTWFya2Rvd24gcmVjb2duaXplcyAnKicsICcrJywgYW5kICctJyBmb3IgYnVsbGV0cw0KLSBBbmQgb25jZSB5b3UndmUgc3RhcnRlZCAsaXQgZG9lc24ndCBjYXJlIHdoYXQgeW91IHVzZQ0KDQogICAgKyBJdCBjYXJlcyBhYm91dCAqKmluZGVudGF0aW9uKioNCiAgICArIEEgc2Vjb25kIGxldmVsIGl0ZW0NCiAgICAgICAgLSBBIHRoaXJkIGxldmVsIGl0ZW0NCiAgICAgICAgDQoNCg0KDQoNCiMjIyBJbmNsdWRpbmcgUiBjb2RlDQoNCkxldCdzIGFsbG93IGZvciBzb21lIFIgY29kZQ0KDQpEZWZhdWx0IHZlcnNpb246DQoNCmBgYHtyLCBldmFsID0gRkFMU0V9DQozKzINCmBgYA0KDQpXZSBjYW4gdXNlIGEgY2h1bmsgb3B0aW9ucyBsaWtlIGBlY2hvID0gRkFMU0VgIHRvIHByZXZlbnQgY29kZSBmcm9tIGFwcGVhcmluZyBpbiB0aGUgb3V0cHV0Lg0KYGBge3IsIGVjaG89RkFMU0V9DQoyNSsxMA0KYGBgDQoNClRoaXMgaXMgZXNwZWNpYWxseSBoZWxwZnVsIHdoZW4geW91IGFyZSBkcmF3aW5nIGNoYXJ0cyBvciBwcmVzZW50aW5nIHN0YXRpc3RpY3MuICBObyBvbmUgbmVlZHMgdG8gc2VlIGFsbCB0aGF0Lg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KcmFuZG9tLm51bWJlcnMgPC0gcm5vcm0oMTAwLCBtZWFuPTAsIHNkPTEpDQoNCmhpc3QocmFuZG9tLm51bWJlcnMpDQoNCnN1bW1hcnkocmFuZG9tLm51bWJlcnMpDQpgYGANCg0KDQpGb3IgY2xhc3MsIEkgbGlrZSB0byBpbmNsdWRlIChlY2hvKSB0aGUgY29kZSwgYnV0IEkgZG9uJ3Qgd2FudCBpdCB0byBldmFsdWF0ZSBzbyBJIHNldCBgZXZhbCA9IEZBTFNFYC4NCmBgYHtyLCBldmFsPUZBTFNFfQ0KNTArMjANCmBgYA0KDQpZb3UgY2FuIGFsc28gaW5jbHVkZSBpbmxpbmUgY2FsY3VsYXRpb25zLiAgV2hhdCBpcyB0aGUgc3F1YXJlLXJvb3Qgb2YgdHdvPyBFYXN5IHBlYXN5LiBgciBzcXJ0KDIpYC4gUiBuZXZlciBpbmNsdWRlcyB0aGUgY29kZSBpdHNlbGYgaW5saW5lLCBqdXN0IHRoZSBvdXRwdXQuDQoNCkJ5IHRoZSB3YXksIHlvdSBjYW4gb3V0cHV0IHlvdXIgd29yayBhcyBhIFBERiwgV29yZCBEb2N1bWVudCwgb3IgSFRNTCBub3RlIGJvb2suICBZb3UgY2FuIGV2ZW4gbWFrZSBzbGlkZXMuICANCg0KDQojIFRhYmxlcw0KDQpUYWJsZXMgYXJlbid0IG11Y2ggZnVuLiAgSXQncyBtdWNoIG1vcmUgY29udmVuaWVudCB0byB1c2UgYGthYmxlYCAoZnJvbSBga25pdHJgKSB0byBmb3JtYXQgeW91ciBkYXRhZnJhbWVzLg0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFfQ0KbGlicmFyeShrbml0cikNCmthYmxlKGhlYWQobXRjYXJzKSkNCmBgYA0KDQpOb3RpY2UgaG93IHdlIHVzZWQgYGhlYWQoKWAgdGhlcmU/ICBJdCdzIHNvIHdlIGRvbid0IHRha2UgdXAgdGhlIHdob2xlIHBhZ2Ugd2l0aCBhIHRhYmxlIQ0KDQpXZSBjYW4gY3JlYXRlIHBhZ2VkIHRhYmxlcyB1c2luZyBgcGFnZWRfdGFibGUoKWAgZnJvbSB0aGUgYHJtYXJrZG93bmAgcGFja2FnZQ0KDQpgYGB7ciwgZXZhbCA9IEZBTFNFfQ0KbGlicmFyeShybWFya2Rvd24pDQpwYWdlZF90YWJsZShtdGNhcnMpDQpgYGANCg0KTm90aWNlIHRoZSBzaWRld2F5cyBzY3JvbGxpbmcgYWN0aW9uLCB0b28uDQoNCg0KIyBKdXN0IGZvciBmdW4NCg0KSSdtIGdldHRpbmcgaW50byBlbW9qaXMuDQoNCmBgYHtyLCBldmFsID0gRkFMU0V9DQpsaWJyYXJ5KGVtb2ppZm9udCkNCnNlYXJjaF9lbW9qaSgic21pbGUiKQ0KYGBgDQoNCmBgYHtyLCBlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0NCmxpYnJhcnkoZW1vamlmb250KQ0KYGBgDQoNClIgbWFrZXMgbWUgYHIgZW1vamkoInNtaWxlIilgIGByIGVtb2ppKCJzbWlsZXkiKWAgYHIgZW1vamkoInN3ZWF0X3NtaWxlIilgIGxpa2UgYSBgciBlbW9qaSgic21pbGV5X2NhdCIpYCB3aG8gaXMgYHIgZW1vamkoInNtaWxlX2NhdCIpYA0KDQoNCiMgWW91ciB0dXJuDQoNCkNyZWF0ZSBhIG5ldyBSTWFya2Rvd24gZG9jdW1lbnQgdG8gZGVzY3JpYmUgeW91ciBsYXN0IHZhY2F0aW9uLiAgQmUgc3VyZSB0byB0cnkgb3V0IHRoZSBoZWFkZXJzLCBpbmNsdWRlIHNvbWUgZGlmZmVyZW50IHN0eWxlIGZvbnRzLCBhbmQgfn5idWxsZXRlZCBsaXN0c35+IGxpc3RzIHdpdGggYnVsbGV0cy4gIFRyeSBpbmNsdWRpbmcgYSBwaWN0dXJlIGFuZCBzb21lIG1hdGguICANCg0K