假设我们创建了一个函数,一次可以取两个不同的值,然后可以通过使用mapply将该函数应用于R数据帧的两列。例如,如果我们有一个手动创建的函数func,它将两个值相乘,那么我们可以使用以下命令将其应用于具有两列x和y的名为df的数据框-
mapply(func,df$x,df$y) Manually created function named as func: func <-function(x,y){z<-x*y return(z) }
考虑以下数据帧-
> x1<-rpois(20,5) > x2<-rpois(20,5) > df1<-data.frame(x1,x2) > df1输出结果
x1 x2 1 3 8 2 7 5 3 3 6 4 1 5 5 7 8 6 5 5 7 2 2 8 6 8 9 4 4 10 4 7 11 5 6 12 1 7 13 3 8 14 5 6 15 5 6 16 5 5 17 6 2 18 8 3 19 3 3 20 4 3
在df1的x1和x2列上应用func-
> mapply(func,df1$x1,df1$x2)输出结果
[1] 24 35 18 5 56 25 4 48 16 28 30 7 24 30 30 25 12 24 9 12
> y1<-round(rnorm(20),2) > y2<-round(rnorm(20),2) > df2<-data.frame(y1,y2) > df2输出结果
y1 y2 1 0.35 1.30 2 -1.67 -1.11 3 0.39 -1.03 4 -1.09 0.60 5 0.05 -0.03 6 0.08 0.60 7 0.47 -0.71 8 2.01 0.33 9 -1.27 0.46 10 0.47 -0.52 11 0.51 1.80 12 -1.14 0.58 13 0.36 -0.59 14 -1.26 0.71 15 -1.13 -0.85 16 -0.66 0.26 17 -0.69 1.00 18 0.01 0.00 19 -1.48 0.72 20 0.70 -0.51
将func应用于df2的y1和y2列-
> mapply(func,df2$y1,df2$y2)输出结果
[1] 0.4550 1.8537 -0.4017 -0.6540 -0.0015 0.0480 -0.3337 0.6633 -0.5842 [10] -0.2444 0.9180 -0.6612 -0.2124 -0.8946 0.9605 -0.1716 -0.6900 0.0000 [19] -1.0656 -0.3570