R Programming
- Overview of R
- Installing R on Windows
- Download and Install RStudio on Windows
- Setting Your Working Directory (Windows)
- Getting Help with R
- Installing R Packages
- Loading R Packages
- Take Input and Print in R
- R Objects and Attributes
- R Data Structures
- R – Operators
- Vectorization
- Dates and Times
- Data Summary
- Reading and Writing Data to and from R
- Control Structure
- Loop Functions
- Functions
- Data Frames and dplyr Package
- Generating Random Numbers
- Random Number Seed in R
- Random Sampling
- Data Visualization Using R
sapply in R
The sapply() function behaves similarly to lapply(); the only real difference is in the return value. sapply() will try to simplify the result of lapply() if possible. Essentially, sapply() calls lapply()
on its input and then applies the following steps:
- If the result is a list where every element is length 1, then a vector is returned
- If the result is a list where every element is a vector of the same length (> 1), a matrix is returned.
- If it can’t figure things out, a list is returned
To get the help file type the following code.
?sapply()
The body of the sapply() function can be seen here by just typing sapply in your console.
sapply
Output:
function (X, FUN, …, simplify = TRUE, USE.NAMES = TRUE)
{
FUN <- match.fun(FUN)
answer <- lapply(X = X, FUN = FUN, …)
if (USE.NAMES && is.character(X) && is.null(names(answer)))
names(answer) <- X
if (!identical(simplify, FALSE) && length(answer))
simplify2array(answer, higher = (simplify == “array”))
else answer
}
<bytecode: 0x000000000f994120>
<environment: namespace:base>
Example:
x <- list(a = 1:10, b = rep(10,10), c = rnorm(10))
x
lapply(x, sum)
sapply(x, sum)
Output:
> x
$a
[1] 1 2 3 4 5 6 7 8 9 10$b
[1] 10 10 10 10 10 10 10 10 10 10$c
[1] -1.0039491 -0.6831659 0.6343053 0.7298642 -0.4142943 -0.7717037 1.0150913 -0.1714354 0.3530912 0.4718342> lapply(x, sum)
$a
[1] 55$b
[1] 100$c
[1] 0.1596377sapply(x, sum)
a b c
55.0000000 100.0000000 0.1596377
Check the difference in the output for lapply and sapply. Because the result of lapply() was a list where each element had length 1, sapply() collapsed the output into a numeric vector, which is often more useful than a list.
Example 2:
x <- 1:5
sapply(x, runif, min = 0, max = 5)
Output:
[[1]]
[1] 3.772212[[2]]
[1] 1.5118754 0.7759651[[3]]
[1] 0.9903887 4.9451553 3.2073191[[4]]
[1] 1.6318879 2.9374652 0.7642016 4.7481609[[5]]
[1] 2.6468426 3.7913182 3.7799668 4.5520162 0.9024251
Here the output is a list. For this case lapply and sapply result is same.