为了扩展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){...})
答案 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
,则此y
和FUN
相加;否则,它会使用参数FUN
和x
运行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