在 R 中應用多引數函式

Manav Narula 2021年1月22日
在 R 中應用多引數函式

在任何程式語言中,函式都是必不可少的。函式是一個程式碼塊,它可以被呼叫來執行程式設計中的特定操作。

在 R 中,我們有內建的函式,也有使用者定義的函式。我們也可以直接將函式應用於一個或多個引數的列表或向量。

在本教程中,我們將使用下面的向量和函式。

f1 <- function(v1,v2){
  v1+v2
}
vec1 <- c(1,5,9)
vec2 <- c(2,7,6)

這個函式比較簡單,它只是增加了兩個元素,我們有兩個各有三個元素的向量。

在本教程中,我們將使用 sapply()lapply()mapply() 函式,我們將對整個向量應用一個函式,並將多個引數傳遞給同一個,並將向量作為引數傳遞給函式。

在我們要將一個函式應用於給定的向量或列表的情況下,我們可以使用 lapply()sapply()

lapply() 函式返回一個列表作為最終輸出。例如:

lapply(vec1,f1,5)
[[1]]
[1] 6

[[2]]
[1] 10

[[3]]
[1] 14
typeof(lapply(vec1,f1,5))
[1] "list"

如你所見,我們將 f1 函式傳遞給 vec1,並傳遞另一個引數 5,因為該函式需要兩個引數,這只是在所有元素上加 5。

sapply() 執行與 lapply() 函式相同的功能,但被認為是兩者中效率較高的,因為它簡化了輸出,結果不一定是一個列表。

下面的程式碼片段顯示瞭如何操作。

sapply(vec1,f1,5)
[1]  6 10 14
typeof(sapply(vec1,f1,5))
[1] "double"

另一個有趣的函式是 mapply()。它將一個函式應用於作為引數傳遞的向量。該函式應用於向量的第一個元素,第二個元素,以此類推。

mapply(f1,vec1,vec2)
[1]  3 12 15

請注意,使用 mapply() 函式,我們能夠將向量作為多個引數傳遞給一個函式,因為它返回同一位置的元素之和。

Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - R Function