Vectors can use simple arithmetic expressions (+, -, *, /) to perform basic operations. Let's first look at addition, then discuss a caveat of vector arithmetics.

You can add or subtract the corresponding elements of two or more vectors of the same length together.

```
> c(1,2,3) + c(99,98,97)
[1] 100 100 100
> c(1,2,3) + c(4,5,6)
[1] 5 7 9
> c(1,2,3) - c(1,1,1)
[1] 0 1 2
```

But what would happen if all the vectors weren't of the same length? Instead of erroring out, R performs recycling.

Recycling occurs when vector arithmetic is performed on multiple vectors of different sizes. R takes the shorter vector and repeats them until it becomes long enough to match the longer one.

```
> c(1,2,3,4,5,6) + c(1,3)
[1] 2 4 3 7 6 9
```

As you can see, the `c(1,3)`

vector repeated itself to form `c(1,3,1,3,1,3)`

so that it could successfully match the previous term.

If the shorter vector is not a vector of the longer one, then a warning message appears, but the operation still takes place.

```
> c(1,2,3,4,5) + c(1,3)
[1] 2 5 4 7 6
Warning message:
In c(1, 2, 3, 4, 5) + c(1, 3) :
longer object length is not a multiple of shorter object length
```

Multiplying or dividing vectors is similar to addition and subtraction in that each corresponding element matches up and a product is formed. When the sizes differ, recycling occurs.

```
> c(1,2,3) * c(0,3,6)
[1] 0 6 18
> c(1,3,5) * c(2,4)
[1] 2 12 10
```

Warning message:
In c(1, 3, 5) * c(2, 4) :
longer object length is not a multiple of shorter object length

One small detail to notice is that these common arithmetic expressions are actually functions. Thus, they can be with a similar function notation.

```
> "*"(5,6)
[1] 30
```

We can also perform the modulo operator, which outputs the remainder after division of two numbers.

```
> c(55,54,53) %% c(3)
[1] 1 0 2
```

You can also apply linear algebra on your vectors in R. To calculate the cross product, use `crossprod()`

:

```
> crossprod(1:3, 4:6)
[,1]
[1,] 32
```

You'll notice that the return type isn't a new vector, but instead a one-dimensional matrix. We'll look at matrices in the next lesson.

This book doesn't make any assumptions about your background or knowledge of Python or computer programming. You will be guided step by step using a logical and systematic approach. As new concepts, commands, or jargon are encountered they are explained in plain language, making it easy for anyone to understand.

$ Check price(124+ reviews)

This is Volume 2 of Bioinformatics Algorithms: An Active Learning Approach. This book presents students with a light-hearted and analogy-filled companion to the author's acclaimed course on Coursera. Each chapter begins with an interesting biological question that further evolves into more and more efficiently solutions of solving it.

$ Check price(5+ reviews)

Ad