### Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

## Vectorization

It is best to avoid loops when programming in R. There are two reasons for this: simplifying code and computational speed-up. Many mathematical computations on lists, vectors, or arrays may be performed without loops using component-wise arithmetic. The code below demonstrates the computational speedup resulting from replacing a loop with vectorized code:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

a = 1:10

c = 0 # compute sum of squares using a for-loop

for (e in a) c = c + e^2

c

sum(a ^ 2) # same operation using vector arithmetic

a = 1:1000000

c = 0

# time comparison with a million elements

system.time(for (e in a) c = c + e ^ 2)

system.time(sum(a ^ 2))

# The sapply function simplifies code but the computational speed-up may not

# apply in the same way as it did above

a = seq(0, 1, length.out = 10)

b = 0

c = 0

for (e in a) {

b = b + exp(e)

}

b

c = sum(sapply(a, exp))

c

# sapply with an anonymous function f(x) = exp(x ^ 2)

sum(sapply(a, function(x) { return(exp(x ^ 2)) }))

# or simply

sum(sapply(a, function(x) exp(x ^ 2)))

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Suggested playgrounds

Open Source Your Knowledge: become a Contributor and help others learn. Create New Content