繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM