文章目录
lapply()函数
此函数可以将函数应用到向量(包括列表)中的每个元素,再将结果以列表的形式返回。
## for example
a1 <- c(3,4,5)
lapply(a1,function(s){
s+1
})
结果会返回一个4、5、6的列表
sapply()函数
此函数的作用与lapply相同,不同点在于会自动匹配合适的结果结构,并不单纯输出为列表,
## for example
sapply(1:10, function(i) i^2)
#结果会输出为向量,而不是列表
如果返回值是一个多元素的向量,则会匹配为矩阵。
## for example
sapply(1:10, function(i) c(i,i^2)
#结果会输出为矩阵
vapply()函数
尽管sapply非常智能,但是不能指定模板,就意味着结果具有不可控性,vapply函数可以指定输出结果的长度和数据类型(比如指定返回长度为2的数值型结果),可以当做是进阶版的sapply
如果不能按照指定的模板输出结果(例如长度不匹配),程序就会报错。
## for example
vapply(x1, function(x) x ^2, numeric(2))
#指定返回一个包含两个元素的数值向量
#类型有logical < integer < double < complex
mapply()函数
可以在多个向量上进行迭代
## for example
mapply(function(a,b,c) a*b+b*c+a*c, a=c(1,2,3), b=c(5,6,7), c=c(-1,-2,-3))
## [1] -1 -4 -9
像sapply函数一样,mapply也可以简化结果为多元素向量
apply()函数
可以指定函数应用到矩阵或者数组的某个维度上,比如求和函数应用到第一列或者第一行。
(行是第一维度,列是第二维度)
## for example
mat<- matrix( c(1,2,3,4), nrow=2)
> mat
[,1] [,2]
[1,] 1 3
[2,] 2 4
apply(mat, 1, sum)
[1] 4 6
#对矩阵的第一行求和