[英]Is it possible to define a function as an argument of another function in R?
例如:
method1 <- function(alpha,beta,ff)
R允許這個???
我試圖實現的是:我有一個通用方法, method1
。 我有其他方法: f2,f3,f4
。 我希望它像method1 <- function(a,b, ff)
,其中a
& b
是常量,最重要的是, ff
可以是f2
或f3
或f4
,具體取決於我在控制台上調用函數的方式。 理想情況下, f2, f3, f4
計算矩陣。
使用下面的答案中的例子,我想知道為什么我不能這樣做?
f1 <- function(a,b,ff(a,b))
{
solve(ff(a,b))
}
f2 <- function (x,y){
Diag(x*y)
}
這是一個非常糟糕的例子。 但我想知道為什么我不能在參數中包含ff(a,b)??? 寫作的邏輯是什么?
f1 < - function(a,b,ff){ff(a,b)}
取決於你的意思。 您可以將函數作為參數傳遞給另一個函數,並且可以將默認參數設為函數:
f <- function(a,b,f2=function(x,y) { x+y}) {
f2(a,b)
}
f(1,2) ## 3
您可以傳遞函數調用的結果:
f <- function(a,b,c) { a + b + c }
f3 <- function(x,y) { x*y }
f(1,2,f3(3,4))
但是你不能完全按照你指定的方式執行:參數必須根據標准變量命名約定命名(參見?make.names
)。
f <- function(a,b,f2(1,3)) { ... ## error
你可以通過使用反引號,或通過指定names(formals(f))[3] <- "f2(1,3)"
來做到這一點,但這很危險,可能不是你想要的。
function(a,b,`f2(1,3)`) { }
如果你再詳細解釋一下你想要做的事情,你可能會得到一個更有意義的答案......
編輯 :根據您的描述進行猜測,您想要我上面描述的第一件事。
f1 <- function(a,b,ff) {
ff(a,b)
}
f2 <- function(x,y) diag(x)*y
f3 <- function(x,y) matrix(runif(x*y),nrow=x,ncol=y)
f4 <- function(x,y) outer(seq(x),seq(y))
f1(2,2,f2)
## [,1] [,2]
## [1,] 2 0
## [2,] 0 2
f1(2,2,f3)
## [,1] [,2]
## [1,] 0.773723089 0.09640121
## [2,] 0.006206349 0.84351541
f1(2,2,f4)
## [,1] [,2]
## [1,] 1 2
## [2,] 2 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.