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
#对矩阵的第一行求和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值