簡體   English   中英

R:如何將函數作為 arguments 傳遞給另一個 function

[英]R: how to pass functions as arguments to another function

假設我想集成一些涉及其他一些用戶定義函數的和和乘積的 function。 讓我們舉一個非常簡單的例子,它給出了同樣的錯誤。

integrate(f = sin + cos, lower=0, upper=1)

這會產生“sin + cos 中的錯誤:二進制運算符的非數字參數”,我認為這是說將函數添加在一起而不傳遞某種參數是沒有意義的。 所以我有點卡在這里。 這個線程提出了我認為是一個更復雜問題的解決方案,可以在這里應用,但在這種情況下,這樣一個簡單的任務似乎很長。 我實際上有點驚訝,我無法找到將 function arguments 傳遞給幫助手冊中的函數,所以我認為我沒有使用正確的術語。

只需編寫自己的函數:

> integrate(f = function(x) sin(x) + cos(x), lower=0, upper=1)
1.301169 with absolute error < 1.4e-14

在這個例子中,我使用了匿名函數,但這不是必需的。 關鍵是編寫一個函數來表示要集成的任何函數。 在這種情況下,函數應該采用向量輸入並添加每個元素的sin和cos。

同樣,我們可以做到:

foo <- function(x){
    sin(x) + cos(x)
}
integrate(f = foo, lower=0, upper=1)

這是一個老問題,但我最近一直在努力解決這個問題,所以這里有一個簡單的例子,以防它在未來對其他人有所幫助。 @joran 的回答仍然是最好的。

定義你的第一個 function: f1 <- function(x){return(x*2)}

測試它: f1(8) (期望 8*2=16); 返回[1] 16

定義你的第二個 function: f2 <-function(f, y){return(f+y)}

測試一下: f2(f=f1(8), y=1) (期望 8*2 = 16 +1 = 17); 返回[1] 17

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM