R – Apply Function to each Element of a Matrix

We can apply a function to each element of a Matrix, or only to specific dimensions, using apply().

Syntax – apply()

The syntax of apply() function in R is

apply(X, MARGIN, FUN, ...)

where

  • X an array or a matrix
  • MARGIN is a vector giving the subscripts which the function will be applied over. For a matrix 1 indicates rows, 2 indicates columns, c(1,2) indicates rows and columns. If X has named dimension names, it can be a character vector selecting dimension names.
  • FUN is the function to be applied on the element(s) of x
ADVERTISEMENT

Apply Function on each Element of a Matrix

In this example, we will take a 2D matrix. Write a function to increment the argument by 2. Then apply the function on all elements of the matrix.

example.R

M = matrix(c(1:12), ncol=3)

incrementBy2 <- function(x) {
  return(x+2)
} 

y = apply(M, 2, incrementBy2)

Output

> print(M)
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
> print(y)
     [,1] [,2] [,3]
[1,]    3    7   11
[2,]    4    8   12
[3,]    5    9   13
[4,]    6   10   14

Apply Function on each Element of a Matrix – Pass Additional Arguments to the Function

You can also pass additional arguments to the function. Provide the additional arguments to the function as parameters to apply() after the function argument.

In this example, we will pass an argument n to the function applied on each element of the matrix.

example.R

M = matrix(c(1:12), ncol=3)

incrementByN <- function(x, n=0) {
  return(x+n)
} 

y = apply(M, 2, incrementByN, n=6)

Output

> print(M)
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
> print(y)
     [,1] [,2] [,3]
[1,]    7   11   15
[2,]    8   12   16
[3,]    9   13   17
[4,]   10   14   18

Conclusion

In this R Tutorial, we learned how to apply a function on each element of a matrix using apply().