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 integers from 1 to 5. Answer
# Your answer here
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
# Your answer here
Plot the Batman Logo
Run the following lines all at once:
## Plot the batman logo
f1u <- function(x) ifelse ((abs(x) > 3 & abs(x) <= 7), 3*sqrt(1-(x/7)^2), 0)
f1d <- function(x) ifelse ((abs(x) >= 4 & abs(x) <= 7), -3*sqrt(1-(x/7)^2), 0)
f2u <- function(x) ifelse ((abs(x) > 0.50 & abs(x) < 0.75), 3*abs(x)+0.75, 0)
f2d <- function(x) ifelse ((abs(x) > -4 & abs(x) < 4), abs(x/2)-(3*sqrt(33)-7)*x^2/112-3 + sqrt(1-(abs(abs(x)-2)-1)^2), 0)
f3u <- function(x) ifelse ((x > -0.5 & x < 0.5), 2.25, 0)
f4u <- function(x) ifelse ((abs(x) > 1 & abs(x) <= 3), 6 * sqrt(10)/7 + (1.5 - 0.5 * abs(x)) * sqrt(abs(abs(x)-1)/(abs(x)-1)) - 6 * sqrt(10) * sqrt(4-(abs(x)-1)^2)/14, 0)
f5u <- function(x) ifelse ((abs(x) >= 0.75 & abs(x) <= 1), 9-8*abs(x), 0)
fu <- function (x) f1u(x) + f2u(x) + f3u(x) + f4u(x) + f5u(x)
fd <- function (x) f1d(x) + f2d(x)
bm <- function(r,x) ifelse(r%%2==0, fu(x), fd(x))
opar <- par(bg="#02233f", mar=c(0,0,0,0))
plot(x=seq(-7,7,0.065), y=Vectorize(bm)(1:216, seq(-7,7,0.065)), col="#999900", type="l", lwd=3)
par(opar)

View the Attendee Map
library(googlesheets4)
library(sf)
library(leaflet)
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+Lg0KDQpSIGNvZGVzIGFyZSBlbWJlZGRlZCBpbiAnY29kZSBjaHVua3MnLiBXaGVuIHlvdSBydW4gdGhlIGNvZGUsIHRoZSBvdXRwdXQgYXBwZWFycyBpbiB0aGUgbm90ZWJvb2sgdW5kZXIgdGhlIGNvZGUgY2h1bmsgKHRoaXMgY2FuIGJlIGNoYW5nZWQgdW5kZXIgU2V0dGluZ3MpLg0KDQpUbyB2aWV3IGEgY29weSBvZiB5b3VyIG5vdGVib29rIGFzIEhUTUwsIGp1c3QgaGl0ICoqU2F2ZSoqLCB0aGVuICoqUHJldmlldyoqLg0KDQpLZXlib2FyZCBzaG9ydGN1dHM6DQogLSBydW4gdGhlIGN1cnJlbnQgbGluZSBvZiBSOiAqY3RybCArIGVudGVyKg0KIC0gcnVuIGV2ZXJ5dGhpbmcgaW4gdGhlIGN1cnJlbnQgY29kZSBjaHVuazogKmN0cmwgKyBzaGlmdCArIGVudGVyKg0KIC0gaW5zZXJ0IGEgbmV3IGNvZGUgY2h1bms6ICpjdHJsICsgYWx0ICsgaSoNCg0KIyBSdW4gQ29kZQ0KDQpgYGB7cn0NCnggPSAiSGVsbG8gV29ybGQhIg0KeA0KYGBgDQoNCmBgYHtyfQ0KTEVUVEVSU1sxOjVdDQpgYGANCg0KIyBZT1VSIFRVUk4NCg0KQ29tcHV0ZSB0aGUgcHJvZHVjdCBvZiB0aGUgaW50ZWdlcnMgZnJvbSAxIHRvIDUuIFtBbnN3ZXJdKGh0dHBzOi8vYml0Lmx5LzNybmxPYVkpDQoNCmBgYHtyfQ0KIyBZb3VyIGFuc3dlciBoZXJlDQpgYGANCg0KIyBQbG90IGEgQ29zaW5lIFdhdmUNCg0KUnVuIHRoZSBmb2xsb3dpbmc6DQoNCmBgYHtyfQ0KIyMgUGxvdCBhIGNvc2luZSB3YXZlDQp4dmFscyA9IDQgKiBwaSAqICgwOjEwMCkvMTAwDQpwbG90KHggPSB4dmFscywgeSA9IGNvcyh4dmFscyksIHR5cGUgPSAiYiIpDQpgYGANCg0KIyBZT1VSIFRVUk4NCg0KUGxvdCBhIHNpbmUgd2F2ZS4gW0Fuc3dlcl0oaHR0cHM6Ly9iaXQubHkvMzZOUG1wMikNCg0KYGBge3J9DQojIFlvdXIgYW5zd2VyIGhlcmUNCmBgYA0KDQojIFBsb3QgdGhlIEJhdG1hbiBMb2dvDQoNClJ1biB0aGUgZm9sbG93aW5nIGxpbmVzIGFsbCBhdCBvbmNlOg0KDQpgYGB7cn0NCiMjIFBsb3QgdGhlIGJhdG1hbiBsb2dvDQpmMXUgPC0gZnVuY3Rpb24oeCkgaWZlbHNlICgoYWJzKHgpID4gIDMgJiBhYnMoeCkgPD0gNyksIDMqc3FydCgxLSh4LzcpXjIpLCAwKQ0KZjFkIDwtIGZ1bmN0aW9uKHgpIGlmZWxzZSAoKGFicyh4KSA+PSA0ICYgYWJzKHgpIDw9IDcpLCAtMypzcXJ0KDEtKHgvNyleMiksIDApDQpmMnUgPC0gZnVuY3Rpb24oeCkgaWZlbHNlICgoYWJzKHgpID4gMC41MCAmIGFicyh4KSA8IDAuNzUpLCAzKmFicyh4KSswLjc1LCAwKQ0KZjJkIDwtIGZ1bmN0aW9uKHgpIGlmZWxzZSAoKGFicyh4KSA+IC00ICYgYWJzKHgpIDwgNCksIGFicyh4LzIpLSgzKnNxcnQoMzMpLTcpKnheMi8xMTItMyArIHNxcnQoMS0oYWJzKGFicyh4KS0yKS0xKV4yKSwgMCkNCmYzdSA8LSBmdW5jdGlvbih4KSBpZmVsc2UgKCh4ID4gLTAuNSAmIHggPCAwLjUpLCAyLjI1LCAwKQ0KZjR1IDwtIGZ1bmN0aW9uKHgpIGlmZWxzZSAoKGFicyh4KSA+ICAxICYgYWJzKHgpIDw9IDMpLCA2ICogc3FydCgxMCkvNyArICgxLjUgLSAwLjUgKiBhYnMoeCkpICogc3FydChhYnMoYWJzKHgpLTEpLyhhYnMoeCktMSkpIC0gNiAqIHNxcnQoMTApICogc3FydCg0LShhYnMoeCktMSleMikvMTQsIDApDQpmNXUgPC0gZnVuY3Rpb24oeCkgaWZlbHNlICgoYWJzKHgpID49IDAuNzUgJiBhYnMoeCkgPD0gMSksIDktOCphYnMoeCksIDApDQpmdSA8LSBmdW5jdGlvbiAoeCkgZjF1KHgpICsgZjJ1KHgpICsgZjN1KHgpICsgZjR1KHgpICsgZjV1KHgpDQpmZCA8LSBmdW5jdGlvbiAoeCkgZjFkKHgpICsgZjJkKHgpDQpibSA8LSBmdW5jdGlvbihyLHgpIGlmZWxzZShyJSUyPT0wLCBmdSh4KSwgZmQoeCkpDQpvcGFyIDwtIHBhcihiZz0iIzAyMjMzZiIsIG1hcj1jKDAsMCwwLDApKQ0KcGxvdCh4PXNlcSgtNyw3LDAuMDY1KSwgeT1WZWN0b3JpemUoYm0pKDE6MjE2LCBzZXEoLTcsNywwLjA2NSkpLCBjb2w9IiM5OTk5MDAiLCB0eXBlPSJsIiwgbHdkPTMpDQpwYXIob3BhcikNCmBgYA0KDQojIFZpZXcgdGhlIEF0dGVuZGVlIE1hcA0KDQpgYGB7cn0NCmxpYnJhcnkoZ29vZ2xlc2hlZXRzNCkNCmxpYnJhcnkoc2YpDQpsaWJyYXJ5KGxlYWZsZXQpDQoNCnNoZWV0X2lkIDwtICIxbHUyUEJpS0NLX0E2MjhBRFk5b3BncGVxR21nMGtjOEpzVjYzS0NZbUx6byINCg0KIyMgUmVhZCB0aGUgZGF0YSBmcmFtZSBmcm9tIEdvb2dsZSBTaGVldHMNCmdzNF9kZWF1dGgoKQ0KcGlwb19kZiA8LSByYW5nZV9yZWFkKHNoZWV0X2lkLCBzaGVldCA9ICJGb3JtIFJlc3BvbnNlcyAxIikNCg0KIyMgQ29udmVydCB0aGUgZGF0YSBmcmFtZSB0byBhIHNpbXBsZSBmZWF0dXJlcyBkYXRhIGZyYW1lDQpwaXBvX3NmIDwtIHN0X2FzX3NmKHBpcG9fZGYsIGNvb3JkcyA9IGMoIkxvbiIsICJMYXQiKSwgY3JzID0gNDMyNikNCg0KIyMgUGxvdCB0aGUgbG9jYXRpb25zIGluIGFuIGludGVyYWN0aXZlIGxlYWZsZXQgbWFwDQpsZWFmbGV0KHBpcG9fc2YpICU+JSANCiAgYWRkVGlsZXMoKSAlPiUgDQogIGFkZENpcmNsZU1hcmtlcnMocmFkaXVzID0gNSwgY29sb3IgPSAicmVkIiwgb3BhY2l0eSA9IDAuNSwgDQogICAgICAgICAgICAgICAgICAgcG9wdXAgPSB+cGFzdGUwKCI8cD48Yj4iLCBgRmlyc3QgTmFtZWAsICI8L2I+PC9wPiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYXZvcml0ZSBwbGFudCAvIGFuaW1hbDogIiwgYEZhdm9yaXRlIHBsYW50IG9yIGFuaW1hbGAsICI8L3A+IikpDQpgYGANCg0KIyBFbmQNCg0KQ29uZ3JhdHVsYXRpb25zIG9uIGZpbmlzaGluZyB0aGUgTm90ZWJvb2shIFNhdmUgaXQgKGFnYWluKS4NCg0KQ2xpY2sgb24gdGhlICdQcmV2aWV3JyBidXR0b24gaW4gdGhlIFJTdHVkaW8gdG9vbGJhciB0byBzYXZlIGEgY29weSBvZiB5b3VyIHdvcmsgYXMgSFRNTC4NCg0KDQo=