sapply与自定义函数配合使用



> a<-matrix(1:12,c(3,4))> a.df<-data.frame(a)

> a.df
  X1 X2 X3 X4
1  1  4  7 10
2  2  5  8 11
3  3  6  9 12

> sapply(a.df, function(x,y) x+y+3, y=10)    #按列对第一个参数进行function计算,第一个参数a.df是4列,所以结果是4个结果,而且计算结果的列名用原来的列名
     X1 X2 X3 X4
[1,] 14 17 20 23
[2,] 15 18 21 24
[3,] 16 19 22 25

> sapply(a.df[,1], function(x,y) x+y+3, y=10) # 第一个参数是一列
[1] 14 15 16
> sapply(a.df[,1:2], function(x,y) x+y+3, y=10)   # 第一个参数是2列
     X1 X2
[1,] 14 17

[2,] 15 18

[3,] 16 19

> sapply(a.df[,1:2], function(x,y) x+y+3, y=a.df[,4])   #多个参数的函数,都可以传列进去
     X1 X2
[1,] 14 17
[2,] 16 19
[3,] 18 21

> sapply(a.df[,1:2], function(x,y,z) x+y+z, y=a.df[,4],z=13) # 多个参数的函数,参数自由
     X1 X2
[1,] 24 27
[2,] 26 29
[3,] 28 31

> sapply(a.df[,1:2], function(x,y,z) x+y+z, y=a.df[,4],z=a.df[,3])  # 多个参数的函数,参数自由
     X1 X2
[1,] 18 21
[2,] 21 24
[3,] 24 27
> sapply(a.df[,1:2], function(x,y,z) {c(x+y+z, x+y+z+10)}, y=a.df[,4],z=13)  #函数输出为多个值时,注意变化!!! 第二个参数按行排列了
     X1 X2
[1,] 24 27
[2,] 26 29
[3,] 28 31
[4,] 34 37
[5,] 36 39
[6,] 38 41




  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值