[英]define R function receiving a function argument as a function call without evaluating it
我正在尋找一個定義函數'f',該函數通過以下方式將函數作為參數接收:
f <- function(c,z(...))
{
print(c)
z(...)
}
這樣,如果我定義:
f1 <- function(a)
{
print(a)
}
f2 <- function(a,b)
{
print(a)
print(b)
}
我可以通過以下方式調用“ f”:
f(1,f1(2))
1
2
f(1,f2(2,3))
1
2
3
我知道我可以這樣定義'f':
f <- function(c,z,...)
{
print(c)
z(...)
}
並調用“ f”:
f(1,f1,2)
f(1,f2,1,2)
但這很難理解,因為無法通過查看函數調用來看出f1 / 2是函數自變量,並且該特定函數使用以下自變量。
謝謝
這是您應該做的:
f = function(x,y){
print(x)
y
}
f1 = function(x,y){
print(x)
print(y)
}
請注意,第一個函數( f
)具有第二個參數,並且不對其求值。
在這種情況下,您可以調用所需的函數:
> f(1,f1(2,3))
[1] 1
[1] 2
[1] 3
要么
> f(4,f1)(5,6)
[1] 4
[1] 5
[1] 6
在最后一種情況下, f(4,f1)
返回一個函數,該函數隨后將由(5,6)求值。
f <- function(c,d)
{
print(c)
d
}
f1 <- function(a)
{
print(a)
}
f2 <- function(a,b)
{
print(a)
print(b)
}
測試:
> f(1,f2(2,3))
[1] 1
[1] 2
[1] 3
> f(1,f1(2))
[1] 1
[1] 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.