About this R Notebook

R Notebooks are a ‘flavor’ of R markdown that combine plain text with R commands in code chunks. You can (and should!) edit them with your own notes. Don’t forget to save every few minutes, like anything else!

You can use markdown characters to format text as bold, italic, or strikethrough.

R codes are embedded in ‘code chunks’. When you run the code, the output appears in the notebook under the code chunk (this can be changed under Settings).

To view a copy of your notebook as HTML, just hit Save, then Preview.

Keyboard shortcuts: - run the current line of R: ctrl + enter - run everything in the current code chunk: ctrl + shift + enter - insert a new code chunk: ctrl + alt + i

Run Code

x = "Hello World!"
x
[1] "Hello World!"
LETTERS[1:5]
[1] "A" "B" "C" "D" "E"

YOUR TURN

Compute the product of the numbers from 1 to 5. Answer

1 * 2 * 3 * 4 * 5
[1] 120
## or factorial(5)

Plot a Cosine Wave

Run the following:

## Plot a cosine wave
xvals = 4 * pi * (0:100)/100
plot(x = xvals, y = cos(xvals), type = "b")

YOUR TURN

Plot a sine wave Answer

xvals = 4 * pi * (0:100)/100
plot(x = xvals, y = sin(xvals), type = "b")

View the Attendee Map

library(googlesheets4)
library(sf)
Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(leaflet)
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
sheet_id <- "1lu2PBiKCK_A628ADY9opgpeqGmg0kc8JsV63KCYmLzo"

## Read the data frame from Google Sheets
gs4_deauth()
pipo_df <- range_read(sheet_id, sheet = "Form Responses 1")
Reading from "Spatial Analysis with R Workshop (Responses)"
Range "'Form Responses 1'"
## Convert the data frame to a simple features data frame
pipo_sf <- st_as_sf(pipo_df, coords = c("Lon", "Lat"), crs = 4326)

## Plot the locations in an interactive leaflet map
leaflet(pipo_sf) %>% 
  addTiles() %>% 
  addCircleMarkers(radius = 5, color = "red", opacity = 0.5, 
                   popup = ~paste0("<p><b>", `First Name`, "</b></p>",
                                   "Favorite plant / animal: ", `Favorite plant or animal`, "</p>"))

End

Congratulations on finishing the Notebook! Save it (again).

Click on the ‘Preview’ button in the RStudio toolbar to save a copy of your work as HTML.

LS0tDQp0aXRsZTogIkludHJvIHRvIFIgTm90ZWJvb2tzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyBBYm91dCB0aGlzIFIgTm90ZWJvb2sNCg0KUiBOb3RlYm9va3MgYXJlIGEgJ2ZsYXZvcicgb2YgUiBtYXJrZG93biB0aGF0IGNvbWJpbmUgcGxhaW4gdGV4dCB3aXRoIFIgY29tbWFuZHMgaW4gY29kZSBjaHVua3MuIFlvdSBjYW4gKGFuZCBzaG91bGQhKSBlZGl0IHRoZW0gd2l0aCB5b3VyIG93biBub3Rlcy4gRG9uJ3QgZm9yZ2V0IHRvIHNhdmUgZXZlcnkgZmV3IG1pbnV0ZXMsIGxpa2UgYW55dGhpbmcgZWxzZSENCg0KWW91IGNhbiB1c2UgbWFya2Rvd24gY2hhcmFjdGVycyB0byBmb3JtYXQgdGV4dCBhcyAqKmJvbGQqKiwgKml0YWxpYyosIG9yIH5+c3RyaWtldGhyb3VnaH5+Lg0KDQpSIGNvZGVzIGFyZSBlbWJlZGRlZCBpbiAnY29kZSBjaHVua3MnLiBXaGVuIHlvdSBydW4gdGhlIGNvZGUsIHRoZSBvdXRwdXQgYXBwZWFycyBpbiB0aGUgbm90ZWJvb2sgdW5kZXIgdGhlIGNvZGUgY2h1bmsgKHRoaXMgY2FuIGJlIGNoYW5nZWQgdW5kZXIgU2V0dGluZ3MpLg0KDQpUbyB2aWV3IGEgY29weSBvZiB5b3VyIG5vdGVib29rIGFzIEhUTUwsIGp1c3QgaGl0ICoqU2F2ZSoqLCB0aGVuICoqUHJldmlldyoqLg0KDQpLZXlib2FyZCBzaG9ydGN1dHM6DQogLSBydW4gdGhlIGN1cnJlbnQgbGluZSBvZiBSOiAqY3RybCArIGVudGVyKg0KIC0gcnVuIGV2ZXJ5dGhpbmcgaW4gdGhlIGN1cnJlbnQgY29kZSBjaHVuazogKmN0cmwgKyBzaGlmdCArIGVudGVyKg0KIC0gaW5zZXJ0IGEgbmV3IGNvZGUgY2h1bms6ICpjdHJsICsgYWx0ICsgaSoNCg0KIyBSdW4gQ29kZQ0KDQpgYGB7cn0NCnggPSAiSGVsbG8gV29ybGQhIg0KeA0KYGBgDQoNCmBgYHtyfQ0KTEVUVEVSU1sxOjVdDQpgYGANCg0KIyBZT1VSIFRVUk4NCg0KQ29tcHV0ZSB0aGUgcHJvZHVjdCBvZiB0aGUgbnVtYmVycyBmcm9tIDEgdG8gNS4gW0Fuc3dlcl0oaHR0cHM6Ly9iaXQubHkvM3JubE9hWSkNCg0KYGBge3J9DQoxICogMiAqIDMgKiA0ICogNQ0KDQojIyBvciBmYWN0b3JpYWwoNSkNCmBgYA0KDQojIFBsb3QgYSBDb3NpbmUgV2F2ZQ0KDQpSdW4gdGhlIGZvbGxvd2luZzoNCg0KYGBge3J9DQojIyBQbG90IGEgY29zaW5lIHdhdmUNCnh2YWxzID0gNCAqIHBpICogKDA6MTAwKS8xMDANCnBsb3QoeCA9IHh2YWxzLCB5ID0gY29zKHh2YWxzKSwgdHlwZSA9ICJiIikNCmBgYA0KDQojIFlPVVIgVFVSTg0KDQpQbG90IGEgc2luZSB3YXZlIFtBbnN3ZXJdKGh0dHBzOi8vYml0Lmx5LzM2TlBtcDIpDQoNCmBgYHtyfQ0KeHZhbHMgPSA0ICogcGkgKiAoMDoxMDApLzEwMA0KcGxvdCh4ID0geHZhbHMsIHkgPSBzaW4oeHZhbHMpLCB0eXBlID0gImIiKQ0KYGBgDQoNCiMgUGxvdCB0aGUgQmF0bWFuIExvZ28NCg0KUnVuIHRoZSBmb2xsb3dpbmcgbGluZXMgYWxsIGF0IG9uY2U6DQoNCmBgYHtyfQ0KIyMgUGxvdCB0aGUgYmF0bWFuIGxvZ28NCmYxdSA8LSBmdW5jdGlvbih4KSBpZmVsc2UgKChhYnMoeCkgPiAgMyAmIGFicyh4KSA8PSA3KSwgMypzcXJ0KDEtKHgvNyleMiksIDApDQpmMWQgPC0gZnVuY3Rpb24oeCkgaWZlbHNlICgoYWJzKHgpID49IDQgJiBhYnMoeCkgPD0gNyksIC0zKnNxcnQoMS0oeC83KV4yKSwgMCkNCmYydSA8LSBmdW5jdGlvbih4KSBpZmVsc2UgKChhYnMoeCkgPiAwLjUwICYgYWJzKHgpIDwgMC43NSksIDMqYWJzKHgpKzAuNzUsIDApDQpmMmQgPC0gZnVuY3Rpb24oeCkgaWZlbHNlICgoYWJzKHgpID4gLTQgJiBhYnMoeCkgPCA0KSwgYWJzKHgvMiktKDMqc3FydCgzMyktNykqeF4yLzExMi0zICsgc3FydCgxLShhYnMoYWJzKHgpLTIpLTEpXjIpLCAwKQ0KZjN1IDwtIGZ1bmN0aW9uKHgpIGlmZWxzZSAoKHggPiAtMC41ICYgeCA8IDAuNSksIDIuMjUsIDApDQpmNHUgPC0gZnVuY3Rpb24oeCkgaWZlbHNlICgoYWJzKHgpID4gIDEgJiBhYnMoeCkgPD0gMyksIDYgKiBzcXJ0KDEwKS83ICsgKDEuNSAtIDAuNSAqIGFicyh4KSkgKiBzcXJ0KGFicyhhYnMoeCktMSkvKGFicyh4KS0xKSkgLSA2ICogc3FydCgxMCkgKiBzcXJ0KDQtKGFicyh4KS0xKV4yKS8xNCwgMCkNCmY1dSA8LSBmdW5jdGlvbih4KSBpZmVsc2UgKChhYnMoeCkgPj0gMC43NSAmIGFicyh4KSA8PSAxKSwgOS04KmFicyh4KSwgMCkNCmZ1IDwtIGZ1bmN0aW9uICh4KSBmMXUoeCkgKyBmMnUoeCkgKyBmM3UoeCkgKyBmNHUoeCkgKyBmNXUoeCkNCmZkIDwtIGZ1bmN0aW9uICh4KSBmMWQoeCkgKyBmMmQoeCkNCmJtIDwtIGZ1bmN0aW9uKHIseCkgaWZlbHNlKHIlJTI9PTAsIGZ1KHgpLCBmZCh4KSkNCm9wYXIgPC0gcGFyKGJnPSIjMDIyMzNmIiwgbWFyPWMoMCwwLDAsMCkpDQpwbG90KHg9c2VxKC03LDcsMC4wNjUpLCB5PVZlY3Rvcml6ZShibSkoMToyMTYsIHNlcSgtNyw3LDAuMDY1KSksIGNvbD0iIzk5OTkwMCIsIHR5cGU9ImwiLCBsd2Q9MykNCnBhcihvcGFyKQ0KYGBgDQoNCiMgVmlldyB0aGUgQXR0ZW5kZWUgTWFwDQoNCmBgYHtyfQ0KbGlicmFyeShnb29nbGVzaGVldHM0KQ0KbGlicmFyeShzZikNCmxpYnJhcnkobGVhZmxldCkNCg0Kc2hlZXRfaWQgPC0gIjFsdTJQQmlLQ0tfQTYyOEFEWTlvcGdwZXFHbWcwa2M4SnNWNjNLQ1ltTHpvIg0KDQojIyBSZWFkIHRoZSBkYXRhIGZyYW1lIGZyb20gR29vZ2xlIFNoZWV0cw0KZ3M0X2RlYXV0aCgpDQpwaXBvX2RmIDwtIHJhbmdlX3JlYWQoc2hlZXRfaWQsIHNoZWV0ID0gIkZvcm0gUmVzcG9uc2VzIDEiKQ0KDQojIyBDb252ZXJ0IHRoZSBkYXRhIGZyYW1lIHRvIGEgc2ltcGxlIGZlYXR1cmVzIGRhdGEgZnJhbWUNCnBpcG9fc2YgPC0gc3RfYXNfc2YocGlwb19kZiwgY29vcmRzID0gYygiTG9uIiwgIkxhdCIpLCBjcnMgPSA0MzI2KQ0KDQojIyBQbG90IHRoZSBsb2NhdGlvbnMgaW4gYW4gaW50ZXJhY3RpdmUgbGVhZmxldCBtYXANCmxlYWZsZXQocGlwb19zZikgJT4lIA0KICBhZGRUaWxlcygpICU+JSANCiAgYWRkQ2lyY2xlTWFya2VycyhyYWRpdXMgPSA1LCBjb2xvciA9ICJyZWQiLCBvcGFjaXR5ID0gMC41LCANCiAgICAgICAgICAgICAgICAgICBwb3B1cCA9IH5wYXN0ZTAoIjxwPjxiPiIsIGBGaXJzdCBOYW1lYCwgIjwvYj48L3A+IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhdm9yaXRlIHBsYW50IC8gYW5pbWFsOiAiLCBgRmF2b3JpdGUgcGxhbnQgb3IgYW5pbWFsYCwgIjwvcD4iKSkNCmBgYA0KDQojIEVuZA0KDQpDb25ncmF0dWxhdGlvbnMgb24gZmluaXNoaW5nIHRoZSBOb3RlYm9vayEgU2F2ZSBpdCAoYWdhaW4pLg0KDQpDbGljayBvbiB0aGUgJ1ByZXZpZXcnIGJ1dHRvbiBpbiB0aGUgUlN0dWRpbyB0b29sYmFyIHRvIHNhdmUgYSBjb3B5IG9mIHlvdXIgd29yayBhcyBIVE1MLg0KDQoNCg==