关闭

sapply与自定义函数配合使用

717人阅读 评论(0) 收藏 举报


> 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




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:66233次
    • 积分:990
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:6篇
    • 译文:0篇
    • 评论:2条
    最新评论