[英]Passing a function with parameters as an argument to another function in R
考慮一個例子:
我想將帶有或不帶有參數的函數傳遞給另一個函數,並以以下方式使用它:
genfx <- function(fx, fy, M, fs, ...){
a <- 1
b <- fx(a)
...
}
當fx = dunif
起作用時,但是如何為fx
傳遞其他參數,例如dunif(min=-0.5, max-0.5)
)? 是否可以在不為genfx
指定額外參數的情況下做到這genfx
?
沒有更多細節,我們可能不需要它們,最簡單的情況是將...
插入對fx
的調用中,就好像...
只是另一個參數:
genfx <- function(fx, fy, M, fs, ...){
a <- 1
b <- fx(a, ...)
## more code here
}
例如:
genfx <- function(fx, ...){
a <- 1
b <- fx(a, ...)
b
}
> genfx(dunif)
[1] 1
> genfx(dunif, min = -0.5, max = 1.5)
[1] 0.5
(請注意,為簡單起見,我刪除了其他參數。在這種情況下,這不是必需的。)
這是pryr
包的一種方法
library(pryr)
genfx <- function(fx) {
a <- 1
b <- fx(a)
b
}
myDunif <- partial(dunif, min=-0.5, max=0.5)
genfx(dunif)
[1] 1
genfx(myDunif)
[1] 0
partial
只是准備一個帶有部分完整參數列表的函數。 在這種情況下很方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.