如何將手動建立的函式應用到 R 資料框中的兩列?


假設我們建立了一個函式,一次可以接受兩個不同的值,那麼我們可以使用 mapply 將該函式應用到 R 資料框的兩列。例如,如果我們有一個手動建立的函式(稱為 func),用於乘以兩個值,那麼我們可以透過使用以下命令將其應用到一個名為 df 的資料框中,該資料框有兩列 x 和 y −

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

將 func 應用於 df1 的列 x1 和 x2 −

> 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

更新於: 06-Mar-2021

608 次瀏覽

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.