将接收函数参数的R函数定义为函数调用,而不进行求值
我希望通过以下方式定义一个函数“f”,它接收一个函数作为参数:将接收函数参数的R函数定义为函数调用,而不进行求值,r,R,我希望通过以下方式定义一个函数“f”,它接收一个函数作为参数: f <- function(c,z(...)) { print(c) z(...) } f(1,f1(2)) 1 2 f(1,f2(2,3)) 1 2 3 我知道我可以这样定义“f”: f <- function(c,z,...) { print(c) z(...) } 但这不太容易理解,因为通过查看函数调用无法判断f1/2是函数参数,并且该特定函数使用了以下参数 谢谢这是你应该做的: f =
f <- function(c,z(...))
{
print(c)
z(...)
}
f(1,f1(2))
1
2
f(1,f2(2,3))
1
2
3
我知道我可以这样定义“f”:
f <- function(c,z,...)
{
print(c)
z(...)
}
但这不太容易理解,因为通过查看函数调用无法判断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)进行计算。谢谢,这满足了我的要求。根据第一个调用:f(1,f1(2,3))-内部函数参数仅在函数内部使用而不是在函数开头使用时才结束,这是否一般?关于第二次调用f(4,f1)(5,6)-在apply函数内时不起作用;错误消息:“错误在乐趣(newX[,i],…):尝试应用非功能”这里有修复程序吗?
f = function(x,y){
print(x)
y
}
f1 = function(x,y){
print(x)
print(y)
}
> f(1,f1(2,3))
[1] 1
[1] 2
[1] 3
> f(4,f1)(5,6)
[1] 4
[1] 5
[1] 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