-2
我使用R來構建數學模型。我想寫一個函數f(a, b, g)
,它需要3個參數,最後一個是函數。我想知道我是否可以將一個函數作爲參數傳遞給另一個函數?如果這是可能的,你們能給我一個簡單的例子嗎?謝謝。R語言,我們是否可以傳遞一個函數作爲參數
我使用R來構建數學模型。我想寫一個函數f(a, b, g)
,它需要3個參數,最後一個是函數。我想知道我是否可以將一個函數作爲參數傳遞給另一個函數?如果這是可能的,你們能給我一個簡單的例子嗎?謝謝。R語言,我們是否可以傳遞一個函數作爲參數
將函數傳遞給函數參數當然是合法的。許多基本的R函數都這樣做。例如,
tapply(..., FUN)
您可以通過?tapply
來檢查它們。
事情是,你只把這個函數的名字當作符號來對待。例如,在下面的玩具例如:
foo1 <- function() print("this is function foo1!")
foo2 <- function() print("this is function foo2!")
test <- function (FUN) {
if (!is.function(FUN)) stop("argument FUN is not a function!")
FUN()
}
## let's have a go!
test(FUN = foo1)
test(FUN = foo2)
它也可以的foo1
或foo2
函數參數傳遞給test
,通過使用...
。我留下這個讓你有一些研究。
如果您熟悉C語言,那麼不難理解爲什麼這是合法的。 R是用C編寫的(儘管它的語言語法屬於S語言),所以基本上這是通過使用指向函數的指針來實現的。如果您想了解更多信息,請參閱How do function pointers in C work?
功能? http://adv-r.had.co.nz/Functionals.html – Laterow
是的。對於接受其他函數作爲參數的一些R函數,請參閱'?optim'和'?integrate'的Examples部分。 –