What is the difference between lapply vs sapply
For a more comprehensive list of R Interview questions, visit the link.
sapply () is just a wrapper around lapply (). lapply returns a list whereas sapply returns a vector.
# Here is a small data frame of iris data set.
> iris_small
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.1 3.5 1.4 0.2
2 4.9 3.0 1.4 0.2
3 4.7 3.2 1.3 0.2
51 7.0 3.2 4.7 1.4
52 6.4 3.2 4.5 1.5
53 6.9 3.1 4.9 1.5
101 6.3 3.3 6.0 2.5
102 5.8 2.7 5.1 1.9
103 7.1 3.0 5.9 2.1
Let’s convert this into a List ( which you don’t need to to perform lapply function, but just play along for now )
> iris_small_list = as.list(iris_small)
$Sepal.Length
[1] 5.1 4.9 4.7 7.0 6.4 6.9 6.3 5.8 7.1
$Sepal.Width
[1] 3.5 3.0 3.2 3.2 3.2 3.1 3.3 2.7 3.0
$Petal.Length
[1] 1.4 1.4 1.3 4.7 4.5 4.9 6.0 5.1 5.9
$Petal.Width
[1] 0.2 0.2 0.2 1.4 1.5 1.5 2.5 1.9 2.1
Let’s calculate the mean across each of the list elements
> means = lapply(iris_small_list,mean)
> means
$Sepal.Length
[1] 6.022222
$Sepal.Width
[1] 3.133333
$Petal.Length
[1] 3.911111
$Petal.Width
[1] 1.277778
Each element of the list element gets sent to the mean function as an argument and the result is returned in a list finally.
Now, let’s perform the same with sapply
> means = sapply(iris_small_list,mean)
> means
Sepal.Length Sepal.Width Petal.Length Petal.Width
6.022222 3.133333 3.911111 1.277778
This time the list elements are converted to a vector.