将带参数的函数作为参数传递给R中的另一个函数

时间:2014-10-24 15:43:14

标签: r function

考虑一个例子:

我想将带或不带参数的函数传递给另一个函数,并按以下方式使用它:

genfx <- function(fx, fy, M, fs, ...){ 

  a <- 1
  b <- fx(a)
  ...
}

如果fx = dunif有效,但我如何传递fx的其他参数,例如dunif(min=-0.5, max-0.5))?是否可以在不指定genfx的其他参数集的情况下执行此操作?

2 个答案:

答案 0 :(得分:5)

如果没有更多细节,我们可能不需要它们,最简单的情况就是将...插入到fx的调用中,好像...只是另一个参数:< / p>

genfx <- function(fx, fy, M, fs, ...){ 

  a <- 1
  b <- fx(a, ...)
  ## more code here
}

E.g:

genfx <- function(fx, ...){ 

  a <- 1
  b <- fx(a, ...)
  b
}

> genfx(dunif)
[1] 1
> genfx(dunif, min = -0.5, max = 1.5)
[1] 0.5

(注意我在示例中为了简单起见删除了其他参数。虽然在这种情况下没有必要。)

答案 1 :(得分:0)

以下是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只是准备一个具有部分完整参数列表的函数。在这样的情况下很方便。