Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将接收函数参数的R函数定义为函数调用,而不进行求值_R - Fatal编程技术网

将接收函数参数的R函数定义为函数调用,而不进行求值

将接收函数参数的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”,它接收一个函数作为参数:

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