1: R Basics

Reading

From R Coding Basics: An Introduction to the Basics of Coding in R by Dr. Gaston Sanchez:

Topics

  • Mathematical operations

  • Operation precedence

  • Comments

  • Objects, variables, and assignments

  • Variable names and reserved words

  • Functions

  • Help Documentation

  • Packages

Mathematical Operations

  • Common mathematical operations in R include:
2 + 2     # Add

3 - 4     # Subtract

5 * 2     # Multiply

4 / 2     # Divide

2 ^ 3     # Exponent
2 ** 3    # Exponent as well

Operation Precedence

  • In R, operator precedence (from highest to lowest) is:
# Parenthesis
(2 + 3) * 4

# Exponent
2 ^ 3
2 ** 3

# Multiply and divide (from left to right)
5 * 2
4 / 2

# Add and subtract
2 + 2
3 - 4

πŸ’» Hands-On

Evaluate the following expressions in R:

  • \(19 - 3 \times 6\)

  • \(20 - 2 \times 3^2 + 11\)

  • \(3 + 8 \div 2 \times 2\)

  • \(7 - (5 \times 3 + 2^3)\)

19 - 3 * 6
[1] 1
20 - 2 * 3^2 + 11
[1] 13
3 + 8 / 2 * 2
[1] 11
7 - (5 * 3 + 2^3)
[1] -16

Comments

  • Comments are notes to explain what the code does.

  • In R, comments are created using a hash #.

  • On a line, everything after a hash will be ignored. In other words, even if the comments contain some code, it will not be executed.

  • The keyboard short cut to comment out blocks of code is Command or Ctrl + Shift + c

(2 + 3) * 4    # 2 + 3 will be evaluated first, then multiplied by 4

πŸ’» Hands-On

Run the following code in the console and add a comment describing the output.

5 * (2 + 4) / 2 

(5 * 2 + 4) / 2

5 * (2 + 4 / 2)
5 * (2 + 4) / 2    # 15
[1] 15
(5 * 2 + 4) / 2    # 7
[1] 7
5 * (2 + 4 / 2)    # 20
[1] 20

Object, Variable, and Assignment

  • An object is anything that stores values or instructions.

  • A variable is a name associated to an object so that we can access the object in memory.

  • A variable can be created using the assignment operator <- (left arrow) or the equal sign =.

# 100 is an object itself
100

# We name this object 'eagles'
eagles <- 100

# The variable 'eagles' allows us to access the object 100
eagles

πŸ’» Hands-On

Create the following variables:

  • year that stores the value 2026

  • price that stores the value 5.5

  • score that stores the value 93

year <- 2026

price <- 5.5

score <- 9.3

Variable Names

  • Variable names are case-sensitive.
# These names are NOT the same
eagles

Eagles

EAGLES

eaGleS

EagLEs

EaGlEs

πŸ’» Hands-On

Run the following code in the console. What does it return?

EAGLES <- 123

Eagles

Since variable names are case-sensitive, EAGLES and Eagles are different. In this case, we created EAGLES but not Eagles so R will throw an error.

EAGLES <- 123

Eagles
Error: object 'Eagles' not found

Variable Names

  • A variable name must start with a letter or a period (not recommended). The rest can only consist of letters a-z, A-Z, numbers 0-9, underscores _, and periods .

  • A variable name cannot be a reserved word (TRUE, FALSE, if, for, while, etc.)

# Valid variable names
age            
height_cm1    
weight2.kg    

# Valid but not recommended
.data       
True

Reserved Words

  • Reserved words are words with special meaning and cannot be used as variable names.
if, else, for, while, function 

break, stop, continue, next

TRUE, FALSE

NULL, NA, Inf, NaN

πŸ’» Hands-On

The following R code attempts to create variables. Run each line in the console and explain why the variable name is invalid.

9null <- 5

null%9 <- 5

null 9 <- 5

_null9 <- 5 

null,9 <- 5

NULL <- 5

Note that all given variable names are invalid. See below for the explanation.

9null <- 5     # variable name cannot start with a number

null%9 <- 5    # variable name cannot contain any percentage

null 9 <- 5    # variable name cannot contain any space

_null9 <- 5    # variable name cannot start with an underscore

null,9 <- 5    # variable name cannot contain any comma

NULL <- 5      # variable name cannot be a reserved word

Naming Styles

Three common naming styles for variables include

eagles_green_swag    # snake case

eaglesGreenSwag      # camel case

eagles.green.swag    # period case

πŸ’» Hands-On

Create three variables that represent the phrase β€œCrimson Roll Tide” using the three naming styles.

[Tidyverse style guide]{https://style.tidyverse.org/syntax.html) recommends the snake case, which is what I tend to use as well!

crimson_roll_tide    # snake case

crimsonRollTide      # camel case

crimson.roll.tide    # period case

Functions

  • A function is a collection of R code to perform a complex task or obtain certain results.

  • R has many useful built-in functions.

# Absolute value, sign function, and squared root
abs, sign, sqrt

# Rounding of numbers
round, floor, ceiling, trunc, signif

# Logarithms and Exponentials
exp, log, expm1, log1p

# Combination and factorial
choose, factorial, lchoose, lfactorial

# Trigonometric and hyperbolic functions
cos, sin, tan, cospi, sinpi, tanpi, acos, asin, atan
cosh, sinh, tanh, acosh, asinh, atanh

# Beta and gamma functions
beta, lbeta, gamma, lgamma, digamma, trigamma, psigamma

πŸ’» Hands-On

Try the following code in the console.

abs(-7)         # absolute value

sqrt(25)        # squared root

exp(3)          # exponential

log(8)          # natural log

factorial(6)    # 1 x 2 x 3 x 4 x 5 x 6
abs(-7)         # absolute value
[1] 7
sqrt(25)        # squared root
[1] 5
exp(3)          # exponential
[1] 20.08554
log(8)          # natural log
[1] 2.079442
factorial(6)    # 1 x 2 x 3 x 4 x 5 x 6
[1] 720

Getting Help

  • If we want to learn more about a function, we can refer to its help documentation.
# Using the operator '?'
?abs
?sqrt

# Using the help() function
help(abs)
help(sqrt)

πŸ’» Hands-On

Use the help documentation to explain the purpose of the following functions.

sign(-17)

log1p(3)

choose(5, 2)

To get the help documentation of the functions, we can use ? or help()

?sign
help(sign)

?log1p
help(log1p)

?choose
help(choose)

The functions do the following

sign(-17)       # give -1 for negative number and 1 for positive number
[1] -1
log1p(3)        # compute log(1 + 3)
[1] 1.386294
choose(5, 2)    # compute combination coefficient 5C2 
[1] 10

πŸ’» Hands-On

What does the following code do? Use the help documentation of round() to confirm your guess/observation.

round(6.267)

round(6.267, digits = 1)
round(6.267, 1)

round(6.267, digits = 2)
round(6.267, 2)

To get the help documentation of round(), we can use ? or help(). It is actually pretty self-explanatory!

?round
help(round)

The given code does the following

# Round to the whole number (digits = 0)
round(6.267)
[1] 6
# Round to 1 decimal place
round(6.267, digits = 1)
[1] 6.3
# Round to 2 decimal places
round(6.267, digits = 2)
[1] 6.27

Packages

  • A package is a collection of functions and data for specific purpose.

  • Most developers make their packages freely available on the Comprehensive R Archive Network (CRAN).

# Install a package
install.packages("bannerCommenter")

# Load an installed package
library(bannerCommenter)
library("bannerCommenter")

# Uninstall a package
remove.packages("bannerCommenter")