如何创建一个以FUN为参数的R函数

时间:2017-10-25 19:48:25

标签: r function parameters

为了扩展R函数的可用性,我们需要传递一个类型为函数的参数(FUN),请你演示如何在另一个函数中声明一个函数参数以及如何调用它。像

MyOperation<-function(x,y,FUN){
    int sum<-x+y
    if (!missing(FUN)) sum<-FUN(sum)}
    return sum
}

Res<- MyOperation(x=1,y=2,FUN=function(n){...})

2 个答案:

答案 0 :(得分:4)

您不在R中声明变量。您还可以在形式参数列表中指定默认值。在这种情况下,您无需使用missing

如果未指定FUN(x + y),则会运行x+y或返回FUN

myOp2 <- function(x, y, FUN = identity) FUN(x + y)

myOp2(1, 2)
## [1] 3

myOp2(1, 3, sqrt)
## [1] 2

一个增强功能可能是允许将函数指定为函数或字符串:

myOp2a <- function(x, y, FUN = identity) {
    FUN <- match.fun(FUN)
    FUN(x + y)
}

myOp2a(1, 3, "sqrt")
## [1] 2

myOp2a(1, 3, sqrt)
## [1] 2

如果未指定x,则此yFUN相加;否则,它会使用参数FUNx运行y

myOp3 <- function(x, y, FUN = sum) FUN(x, y)

myOp3(1, 2)   
## [1] 3

myOp3(1, 2, min)
## [1] 1

答案 1 :(得分:1)

你只有一些基本的R语法问题。 R中没有int,你的函数结束括号位于错误的位置,return()是R中的函数 - 不是关键字。看看

MyOperation<-function(x,y,FUN){
  sum <- x+y
  if (!missing(FUN)) sum<-FUN(sum)
  return(sum)
}

MyOperation(x=1,y=2)
# [1] 3 
MyOperation(x=1,y=2,FUN=function(n){n+100})
# [1] 103