Processing math: 100%

Using R as a Calculator

One of the most basic ways to use R is as a calculator. We can enter many math functions directly into the R Console. We will start to look at the various ways in which we can use R.

Arithmetic Operators

R can handle most simple types of math operators.

Operator Description
+ Addition
- Subtraction
* Multiplication
/ Division
^ or ** Exponentiation

For example:

# Addition
5+4
## [1] 9
# Subtraction
124 - 26.82 
## [1] 97.18
# Multiplication
5*4
## [1] 20
# Division
35/8
## [1] 4.375

More Math functions.

We can also use many other math functions. All of these are included in base R without any extra packages.

# Exponentials
3^(1/2)
## [1] 1.732051
# Exponential Function
exp(1.5)
## [1] 4.481689
# Log base e
log(4.481689)
## [1] 1.5
# Log base 10
log10(1000)
## [1] 3

Logical Operators

Another important feature of R is the ability to use logic. This is not unique to R as all programming languages can do this, but it will be extremely useful when working with data.

Operator Description
< Less Than
> Greater Than
<= Less Than or Equal To
>= Greater Than or Equal To
== Exactly Equal To
!= Not Equal To
!a Not a
a&b a AND b

We can then see an example of this:

a <- c(1:12)

If we wanted to know where a>9 or where a<4 we would expect to see the values: 1 2 3 10 11 12.

Having R do this

a
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
a>9
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [12]  TRUE

We can see that what R gives is are Boolean values as to whether or not each element of a is greater than 9. Similarly:

a<4
##  [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [12] FALSE

One simple thing we might try is to just combine these 2 values into a conditional

a>9 | a<4
##  [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
## [12]  TRUE

This again just gives us Booleans and not necessarily the values that we were hoping to see. We use this to index a in the following manner

a[a>9 | a<4]
## [1]  1  2  3 10 11 12

We will look at indexing with much further detail as we move through this course.


Further Operators

There are other operators that we will use that are not necesssarily mathematical in nature. Each one of them is crucial for the use of R.

Description R Symbol Example
Comment # # This is a comment
Assignment <- x <- 5
Assignment -> 5 -> x
Assigment = x = 5
Concatenation operator c c(1,2,4)
Modular %% 25 %% 6
Sequence from a to b by h seq seq(a,b,h)
Sequence Operator : 0:3

Quick Check Practice

# This will get executed each time the exercise gets initialized b = 6 # Create a variable a, equal to 5 # Do this by typing: a <- 5 # Square a # Create a variable a, equal to 5 a <- 5 # Square a a^2 test_object("a") test_output_contains("25", incorrect_msg = "Make sure to print `a`") success_msg("Great!")
Use the assignment operator (<-) to create the variable a.
1
2
# Create a variable a, equal to 5
# Do this by typing: a <- 5
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Math Functions in R

We also have access to a wide variety of mathematical functions that are already built into R.

Description R Symbol
Square Root sqrt
floor(x) floor
\ceil(x) ceiling
Logarithm log
Exponential function, e^x exp
Factorial, ! factorial

Quick Check Practice

b <- NA # Create a variable b, equal to 4 # What is the log of b? # what is the exponential of the log of b? # Create a variable b, equal to 4 b = 4 # What is the log of b? log(b) # what is the exponential of the log of b? exp(log(b)) test_object("b") test_function("log", args = "x") test_function("exp", args="x") test_output_contains("1.386", incorrect_msg = "Did you take the logarithm of b?") test_output_contains("4", incorrect_msg = "Did you take theexponential of the logarithm of b?") test_error() success_msg("Great job!")
Use the assignment operator (<-) to create the variable a.
1
2
# Create a variable b, equal to 4
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Previous section:
Next section: