Doing Math in R

This is my guide on doing math in R. 

R programming books on Amazon

Doing Math in R

Working in R means doing a lot of calculations. This is what R is for and why it is called a statistical programming language. You can do simple math and work with vectors. In fact, there are a few different categories. They are:

  • Arithmetic
  • Functions
  • Vectors
  • Matrixes


The arithmetic operators should be familiar to everyone. These are the basic math operators everyone learned when they were kids.

  • \[x + y\]               y added to x
  • \[x - y\]                y subtracted from x
  • \[x * y\]                x multiplied by y
  • \[\frac{x}{y}\]        x divided by y
  • \[x ^ y\]                x raised to the power of y
  • \[x %% y\]           remainder of x divided by y
  • \[x% / %y\]          x divided by y but rounded down

Let’s move to the next section, mathematical functions. These are the traditional algebraic functions and they work the same way. 

  • abs(x)              takes the absolute value of x
  • log x                takes the logarithm of x with base y
  • exp(x)              returns the exponential of x
  • sqrt(x)              returns the square root of x
  • factorial (x)      returns the factorial of x!
  • choose(x,y)     returns the number of possible combinations when drawing y elements from x  possibilities


You can take the log of a number like this:

Log 1.5

You can take the log of a series of numbers:


That function takes the natural log of the numbers 2,3,4

You can specify a base:

log(2:4, base=4)

The other functions work similarly, I will get into them more when we need to.


You can round numbers easily in R. You just use the ‘round()’ function. 

round(454567.2333445, digits=3)


Significant digits can be done just as easily.

signif(333.334455, digits=3)


Trig functions are also available. By default, R gives results in radians. So, if you need a result in degrees, you will have to convert it. I will show you how, though. 


Gives results in radians

cos(95 * pi / 180)

Gives results in degrees


Working With Vectors

A vector is a one-dimensional set of values. It looks like this:


They have to be the same type, such as integers. 

There is a function, ‘str()’, that lets you look at any particular vector and see its properties. Use it like this:


To see the length of a vector:


Vectors can be several different types:

  • Numeric
  • Integer
  • Logical
  • Character
  • Datetime
  • Factors

You can test a vector to see what kind it is:




Those are all separate tests to determine what kind of vector you have. You will get the output of ‘true’ when you have a match. 


To create vectors you can enter in numbers or use a sequence of numbers. I will show you how to do both. It is common to assign a variable to your data so it is easy to work on it. The variable is ‘x’.


The ‘c’ is a function itself and combines the numbers in the parentheses to make a vector.

You can also use the colon operator to create a sequence of numbers.


This creates a vector with the number 2,3,4,5,6,7

You can include negative numbers too.



R lets you combine vectors when you need to. If we have:



We can combine them like this:



We can repeat vectors too. We do this with the ‘rep()’ function.

If we want to repeat a vector a set number of times, we do this:

rep(c(1:9), times=4)

When we want to repeat every value:

rep(c(1:9), each=3)

We can also tell R how often to repeat each value:

rep(c(1,9), times=c(3,4)


Looking At Vector Values

Once we have a vector, R lets us look at and work with individual values. The square brackets let us extract a value from the vector. We just indicate the position we want inside of the square brackets. 


This gives us the 3rd number from the start of the vector.

We can get more than one position value at once:


This will give us the first 3 positions of the vector. 

You can change the value of a vector.


Let us change the last value from 5 to 3

X[5] = 3

Now, our vector has been changed to what we want to reflect it as.


Making Copies of Vectors

Before working with an important vector set of data, make a copy of it. You do not want to accidentally change it without knowing it. Do it like this:

X.copy = x

Now you can do your work with a little less worry. 


Comparing Values

To compare values in a vector:

X > 5

This gives us logical values. Any time there is a value greater than 5, the output is true.

We can also check positions that are greater than 5.

which(x > 5)

This shows us which positions in the vector are greater than 5.

These are the logical operators in R:

  • X == y
  • X != y
  • X > y
  • X >= y
  • X < y
  • X <= y
  •  X & y
  • X | y
  • !x
  • xor(x,y)


More Arithmetic Operations

Once we have a vector set up and kind of know how it works, we can start doing more with it. I recently took a statistics class and I used many of these functions to great effect. It really speeds things up. The idea of a vector is to look at each value in a vector and do something with it. That is what functions do once we have a vector set up. Here are the arithmetic functions that are pretty useful:

  • sum(x)               calculates the sum of values in the vector x
  • prod(x)               calculates the product of all the values in the vector x
  • min(x)                gives the minimum of all values in x
  • max(x)               gives the max of all the values in the vector x
  • cumsum(x)        gives the cumulative sum of all the values in the vector x
  • cumprod(x)        gives the cumulative product of all the values in the vector x
  • cumin(x)            gives the minimum for all values in x from the start of the vector to the position indicated
  • cummax(x)        gives the maximum for all values in x from the start of the vector until the position indicated
  • diff(x)                 gives for every value the difference between that value and the next value in the vector