## The apply, lapply, sapply, and tapply functions

R has some very handy functions such as
`apply`

, `sapply`

, `tapply`

, and `mapply`

, that can be used to reduce the task of writing complicated statements. Also, using them makes our code look cleaner. The `apply()`

function is similar to writing a loop statement.

The `lapply()`

function is very similar to the `apply()`

function but can be used on lists; this will return a list. The `sapply()`

function is very similar to `lapply()`

but returns a vector and not a list.

### How to do it…

The `apply()`

function can be used as follows:

mat= matrix(1:25, 5,5) apply(mat,1,sd)

The `lapply()`

function can be used in the following way:

j = list(x = 1:4, b = rnorm(100,1,2)) lapply(j,mean)

The `tapply()`

function is useful when we have broken a vector into factors, groups, or categories:

tapply(mtcars$mpg,mtcars$gear,mean)

### How it works…

The first argument in the `apply()`

function is the data. The second argument takes two values: 1 and 2; if we state 1, R will perform a row-wise computation; if we mention 2, R will perform a column-wise computation. The third argument is the function. We would like to calculate the standard deviation of each row in R; hence we use the `sd`

function as the third argument. Note that we can define our own function and replace it with the `sd`

function.

With regard to the `lapply()`

function, we have defined J as a list and would like to calculate the mean. The first argument in the `lapply()`

function is the data and the second argument is the function used to process the data.

The first argument in the `tapply()`

function is the data; in our case it is `mpg`

. The second argument is the factor or the grouping; in this case it would be `gears`

. The last argument is the function used to process the data. We would like to calculate the mean of `mpg`

for each unique gear (3, 4, and 5 gears) in the mtcars data.