# Using the apply family of functions in R

September 12, 2015
By

(This article was first published on DataScience+, and kindly contributed to R-bloggers)

In this article, I will demonstrate how to use the `apply` family of functions in R. They are extremely helpful, as you will see.

## apply

`apply` can be used to apply a function to a matrix.
For example, let’s create a sample dataset:

```data <- matrix(c(1:10, 21:30), nrow = 5, ncol = 4)
data

[,1] [,2] [,3] [,4]
[1,]    1    6   21   26
[2,]    2    7   22   27
[3,]    3    8   23   28
[4,]    4    9   24   29
[5,]    5   10   25   30
```

Now we can use the apply function to find the mean of each row as follows:

```apply(data, 1, mean)
13.5 14.5 15.5 16.5 17.5
```

The second parameter is the dimension. `1` signifies rows and `2` signifies columns. If you want both, you can use `c(1, 2)`.

## lapply

`lapply` is similar to apply, but it takes a list as an input, and returns a list as the output.
Let’s create a list:

```data <- list(x = 1:5, y = 6:10, z = 11:15)
data

\$x
1 2 3 4 5
\$y
6  7  8  9 10
\$z
11 12 13 14 15
```

Now, we can use lapply to apply a function to each element in the list. For example:

```lapply(data, FUN = median)

\$x
 3
\$y
 8
\$z
 13```

## sapply

`sapply` is the same as `lapply`, but returns a vector instead of a list.

```sapply(data, FUN = median)

x  y  z
3  8 13
```

## tapply

`tapply` splits the array based on specified data, usually factor levels and then applies the function to it.
For example, in the `mtcars` dataset:

```library(datasets)
tapply(mtcars\$wt, mtcars\$cyl, mean)

4        6        8
2.285727 3.117143 3.999214
```

The tapply function first groups the cars together based on the number of cylinders they have, and then calculates the mean weight for each group.

## mapply

`mapply` is a multivariate version of `sapply`. It will apply the specified function to the first element of each argument first, followed by the second element, and so on. For example:

```x <- 1:5
b <- 6:10
mapply(sum, x, b)

7  9 11 13 15
```

It adds 1 with 6, 2 with 7, and so on.

Let me know if you have any questions by leaving a comment below or reaching out to me on Twitter.

To leave a comment for the author, please follow the link and comment on their blog: DataScience+.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

# Never miss an update! Subscribe to R-bloggers to receive e-mails with the latest R posts.(You will not see this message again.)

Click here to close (This popup will not appear again)