R学习笔记--apply函数族

文章目录

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
#对矩阵的第一行求和
上一篇:JavaScript中的call、apply、bind


下一篇:Python pandas.DataFrame.apply函数方法的使用