如何将手动创建的函数应用于R数据框中的两列?

假设我们创建了一个函数,一次可以取两个不同的值,然后可以通过使用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)
}

例1

考虑以下数据帧-

> 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

例2

> 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