lapply
    接收一个向量(vector,list)和一个函数作为输入参数。它将这个函数应用到向量中的每个元素,再将结果以列表的形式返回。
    sprintf() 类似python的格式化输出,%占位符
    sapply( )
    可以根据结果的结构将结果放在一个向量或者矩阵、列表中
    通过simplify=TRUE简化结果(list可简化为matrix)

    1. x1 <- list(c(1,2),c(2,3),c(3,4,5))
    2. sapply(x1,function(x) x^2simplify=TRUE)

    vapply( )
    通过一个附加参数来设定每次迭代返回值的模板。下面这段代码,指定模板为numeric(2),意味着每次迭代都返回一个包含2个元素的数值向量。如果不能按照既定模板进行输出,函数就会终止,并产生错误信息

    1. > vapply(x1,function(x) x^2, numeric(2))
    2. # Error in vapply(x1, function(x) x^2, numeric(2)) : 值的长度必需为2, 但FUN(X[[3]])结果的长度却是3

    mapply( )
    是sapply的多元版本
    依次应用每一个参数的第一个元素、第二个元素、第三个元素上

    1. > a <- matrix(1:12,c(3,4))
    2. > a
    3. [,1] [,2] [,3] [,4]
    4. [1,] 1 4 7 10
    5. [2,] 2 5 8 11
    6. [3,] 3 6 9 12
    7. > mapply(function(x,y,z) x+y+z,a[,1],a[,2],a[,3])
    8. [1] 12 15 18

    apply
    将一个函数应用到矩阵或数组的某个边际(margin)或维度上。计算矩阵每一行的和,因为行是矩阵的第1个维度,所以我们指定MARGIN = 1
    tapply
    (X, INDEX, FUN = NULL, …, simplify = TRUE)

    1. > fac <- factor(rep(c("low","middle","high","plus","max"),2))
    2. > table(fac)
    3. fac
    4. high low max middle plus
    5. 2 2 2 2 2
    6. > tapply(1:10, fac, sum)
    7. high low max middle plus
    8. 11 7 15 9 13