我正在开发一个与Reduce
类似的函数,在这个函数中传入一个函数并将其分配给参数。这是一个简单的例子来展示我正在做的事情。
fun <- function(f){
switch(f,
`+` = "addition",
stop("undefined")
)
}
fun(`+`)
现在这显然不会成功,因为switch
需要character
或numeric
EXPR
。我不知道该怎么做的是将传递给f
的函数fun
转换为string
。
答案 0 :(得分:4)
一种方法是捕获输入并解析呼叫。
proc means data=have;
class MC Date;
var DIA;
run;
答案 1 :(得分:-1)
在上面的皮埃尔评论中,可以使用identical
来测试两个函数是否相同。这对switch
不起作用,但if / else树仍然相对简单:
fun <- function(f) {
if (identical(f, `+`)) {
return('addition')
} else if (identical(f, mean)) {
return('mean')
} else {
return('undefined')
}
}