Reviewing basic R syntax
4.1 basics
1/200 * 30
(59 + 73 + 2)/2
sin(pi/2)
You can create new objects using <-:
x <- 3 * 4
x
[1] 12
All R statements when you create objects, assignment statements, use the same standard form:
### __object_name__ <- value
4.2 What’s in a name
Object names must start with a letter and can only contain letters, numbers underscores and . (periods). You want your object names to be descriptive, so you’ll need a convention for multiple words. We recommend snake_case where you separate lowercase words with underscore.
You can inspect an object by typing its name.
x
[1] 12
Make an another assignment:
run_on_name <- 2.5
run_on_name
[1] 2.5
Make another assignment:
r_rocks <- 2^3
r_rocks
[1] 8
Let’s try to inspect it:
r_rock
Error: object 'r_rock' not found
R_Rocks
Error: object 'R_Rocks' not found
As you can see R is case and spelling sensitive. “R_rocks” and “r_rock” are not exaaaaccctttllly “r_rocks” and so R can’t find them in the environment.
4.3 Calling functions
R has a large collection of built-in functions that are called like this:
function_name(arg1 = cal1, arg2 = val2, ...)
Let’s try using seq() which makes regular __seq__uences of numbers and, while we’re at it, learn more helpful features of RStudio. Type se and hit TAB.
seq(1, 10)
Type this code and notice you get similar assistance with the paired quotation marks:
x <- "hello world"
x
[1] "hello world"
Quotation marks and parentheses must always come in a pair. Rstudio does its best to help you, but it’s still possible to mess up and end up with a mismatch. If this happens, R will show you the continuation character “+”:
x <- "hello
Error: Incomplete expression: x <- "hello
(It doesn’t work in markdown inside the chunk, but does work in the console.)
If you make an assignment, you don’t get to see the value. You’re then tempted to immediately double-check the result:
y <- seq(1, 10, length.out = 5)
y
[1] 1.00 3.25 5.50 7.75 10.00
4.4 Exercises
- Why does this code not work?
my_variable <- 10
my_var1able
Error: object 'my_var1able' not found
This code does not work because there is a typo in the call to “my_variable”. Instead of an “i” we have entered a “1”.
- Tweak each of the following R commands so that they run correctly:
library(tidyverse)
ggplot(dota = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))
fliter(mpg, cyl = 8)
filter(diamond, carat > 3)
library(tidyverse)
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))

filter(mpg, cyl == 8)
filter(diamonds, carat > 3)
- Press Alt = Shift + K. What happens? How can you get to the same place using the menus?
It pulls up the Keyboard Shortcut Quick Reference.
You can also use the menu in the task bar under Tools -> Keyboard Shortcuts Help.
LS0tCnRpdGxlOiAiV29ya2Zsb3c6IGJhc2ljcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKUmV2aWV3aW5nIGJhc2ljIFIgc3ludGF4CgojIyMgNC4xIGJhc2ljcwoKYGBge3J9CjEvMjAwICogMzAKKDU5ICsgNzMgKyAyKS8yCnNpbihwaS8yKQpgYGAKCllvdSBjYW4gY3JlYXRlIG5ldyBvYmplY3RzIHVzaW5nIF9fPC1fXzoKCmBgYHtyfQp4IDwtIDMgKiA0CngKYGBgCgpBbGwgUiBzdGF0ZW1lbnRzIHdoZW4geW91IGNyZWF0ZSBvYmplY3RzLCBfX2Fzc2lnbm1lbnRfXyBzdGF0ZW1lbnRzLCB1c2UgdGhlIHNhbWUgc3RhbmRhcmQgZm9ybToKCmBgYHtyfQpvYmplY3RfbmFtZSA8LSB2YWx1ZQpgYGAKCiMjIyA0LjIgV2hhdCdzIGluIGEgbmFtZQoKT2JqZWN0IG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGxldHRlciBhbmQgY2FuIG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzIF9fdW5kZXJzY29yZXNfXyBhbmQgX18uX18gKHBlcmlvZHMpLiBZb3Ugd2FudCB5b3VyIG9iamVjdCBuYW1lcyB0byBiZSBkZXNjcmlwdGl2ZSwgc28geW91J2xsIG5lZWQgYSBjb252ZW50aW9uIGZvciBtdWx0aXBsZSB3b3Jkcy4gV2UgcmVjb21tZW5kIF9fc25ha2VfY2FzZV9fIHdoZXJlIHlvdSBzZXBhcmF0ZSBsb3dlcmNhc2Ugd29yZHMgd2l0aCBfX3VuZGVyc2NvcmVfXy4KCllvdSBjYW4gaW5zcGVjdCBhbiBvYmplY3QgYnkgdHlwaW5nIGl0cyBuYW1lLgoKYGBge3J9CngKYGBgCgpNYWtlIGFuIGFub3RoZXIgYXNzaWdubWVudDoKCmBgYHtyfQpydW5fb25fbmFtZSA8LSAyLjUKcnVuX29uX25hbWUKYGBgCgpNYWtlIGFub3RoZXIgYXNzaWdubWVudDoKCmBgYHtyfQpyX3JvY2tzIDwtIDJeMwpyX3JvY2tzCmBgYAoKTGV0J3MgdHJ5IHRvIGluc3BlY3QgaXQ6CgpgYGB7cn0Kcl9yb2NrCmBgYAoKYGBge3J9ClJfUm9ja3MKYGBgCgpBcyB5b3UgY2FuIHNlZSBSIGlzIGNhc2UgYW5kIHNwZWxsaW5nIHNlbnNpdGl2ZS4gIlJfcm9ja3MiIGFuZCAicl9yb2NrIiBhcmUgbm90IGV4YWFhYWNjY3R0dGxsbHkgInJfcm9ja3MiIGFuZCBzbyBSIGNhbid0IGZpbmQgdGhlbSBpbiB0aGUgZW52aXJvbm1lbnQuCgojIyMgNC4zIENhbGxpbmcgZnVuY3Rpb25zCgpSIGhhcyBhIGxhcmdlIGNvbGxlY3Rpb24gb2YgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCBsaWtlIHRoaXM6CgpgYGB7cn0KZnVuY3Rpb25fbmFtZShhcmcxID0gY2FsMSwgYXJnMiA9IHZhbDIsIC4uLikKYGBgCgpMZXQncyB0cnkgdXNpbmcgX19zZXEoKV9fIHdoaWNoIG1ha2VzIHJlZ3VsYXIgX19zZXFfX3VlbmNlcyBvZiBudW1iZXJzIGFuZCwgd2hpbGUgd2UncmUgYXQgaXQsIGxlYXJuIG1vcmUgaGVscGZ1bCBmZWF0dXJlcyBvZiBSU3R1ZGlvLiBUeXBlIF9fc2VfXyBhbmQgaGl0IFRBQi4KCmBgYHtyfQpzZXEoMSwgMTApCmBgYAoKVHlwZSB0aGlzIGNvZGUgYW5kIG5vdGljZSB5b3UgZ2V0IHNpbWlsYXIgYXNzaXN0YW5jZSB3aXRoIHRoZSBwYWlyZWQgcXVvdGF0aW9uIG1hcmtzOgoKYGBge3J9CnggPC0gImhlbGxvIHdvcmxkIgp4CmBgYAoKUXVvdGF0aW9uIG1hcmtzIGFuZCBwYXJlbnRoZXNlcyBtdXN0IGFsd2F5cyBjb21lIGluIGEgcGFpci4gUnN0dWRpbyBkb2VzIGl0cyBiZXN0IHRvIGhlbHAgeW91LCBidXQgaXQncyBzdGlsbCBwb3NzaWJsZSB0byBtZXNzIHVwIGFuZCBlbmQgdXAgd2l0aCBhIG1pc21hdGNoLiBJZiB0aGlzIGhhcHBlbnMsIFIgd2lsbCBzaG93IHlvdSB0aGUgY29udGludWF0aW9uIGNoYXJhY3RlciAiKyI6CgpgYGB7cn0KeCA8LSAiaGVsbG8KYGBgCgooSXQgZG9lc24ndCB3b3JrIGluIG1hcmtkb3duIGluc2lkZSB0aGUgY2h1bmssIGJ1dCBkb2VzIHdvcmsgaW4gdGhlIGNvbnNvbGUuKQoKSWYgeW91IG1ha2UgYW4gYXNzaWdubWVudCwgeW91IGRvbid0IGdldCB0byBzZWUgdGhlIHZhbHVlLiBZb3UncmUgdGhlbiB0ZW1wdGVkIHRvIGltbWVkaWF0ZWx5IGRvdWJsZS1jaGVjayB0aGUgcmVzdWx0OgoKYGBge3J9CnkgPC0gc2VxKDEsIDEwLCBsZW5ndGgub3V0ID0gNSkKeQpgYGAKCiMjIyA0LjQgRXhlcmNpc2VzCgoxLiBXaHkgZG9lcyB0aGlzIGNvZGUgbm90IHdvcms/CgpgYGB7cn0KbXlfdmFyaWFibGUgPC0gMTAKbXlfdmFyMWFibGUKYGBgCgpUaGlzIGNvZGUgZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZXJlIGlzIGEgdHlwbyBpbiB0aGUgY2FsbCB0byAibXlfdmFyaWFibGUiLiBJbnN0ZWFkIG9mIGFuICJpIiB3ZSBoYXZlIGVudGVyZWQgYSAiMSIuCgoyLiBUd2VhayBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgUiBjb21tYW5kcyBzbyB0aGF0IHRoZXkgcnVuIGNvcnJlY3RseToKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKCmdncGxvdChkb3RhID0gbXBnKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBkaXNwbCwgeSA9IGh3eSkpCgpmbGl0ZXIobXBnLCBjeWwgPSA4KQpmaWx0ZXIoZGlhbW9uZCwgY2FyYXQgPiAzKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKCmdncGxvdChkYXRhID0gbXBnKSArCiAgZ2VvbV9wb2ludChtYXBwaW5nID0gYWVzKHggPSBkaXNwbCwgeSA9IGh3eSkpCgpmaWx0ZXIobXBnLCBjeWwgPT0gOCkKZmlsdGVyKGRpYW1vbmRzLCBjYXJhdCA+IDMpCmBgYAoKMy4gUHJlc3MgQWx0ID0gU2hpZnQgKyBLLiBXaGF0IGhhcHBlbnM/IEhvdyBjYW4geW91IGdldCB0byB0aGUgc2FtZSBwbGFjZSB1c2luZyB0aGUgbWVudXM/CgpJdCBwdWxscyB1cCB0aGUgS2V5Ym9hcmQgU2hvcnRjdXQgUXVpY2sgUmVmZXJlbmNlLgoKWW91IGNhbiBhbHNvIHVzZSB0aGUgbWVudSBpbiB0aGUgdGFzayBiYXIgdW5kZXIgX19Ub29scyAtPiBLZXlib2FyZCAgU2hvcnRjdXRzIEhlbHBfXy4KCgoKCgoKCg==