簡體   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