> 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