我正在编写一个接收两个参数的函数:数据框和函数,并且在处理数据框之后,使用函数参数(例如,mean,sd,...)对其进行汇总。我的问题是,如何获取作为参数接收的函数的名称?
答案 0 :(得分:4)
怎么样:
f <- function(x) deparse(substitute(x))
f(mean)
# [1] "mean"
f(sd)
# [1] "sd"
答案 1 :(得分:1)
do.call
可能就是你想要的。您可以将函数名称作为字符值,然后将list
个参数传递给do.call
进行评估。例如:
X<-"mean"
do.call(X,args=list(c(1:5)) )
[1] 3
答案 2 :(得分:1)
也许我误解了这个问题,但似乎你可以简单地将函数名作为参数,并在函数中像普通函数一样评估函数。这种方法对我来说很好。省略号用于为您感兴趣的函数添加参数。
myFunc=function(data,func,...){return(func(data,...))}
myFunc(runif(100), sd)
如果您想将其应用于data.frame
的每个列或行,您只需在myFunc
中使用apply语句即可。
答案 3 :(得分:0)
这是我的尝试,也许,您想要返回两者结果和函数名称:
y <- 1:10
myFunction <- function(x, param) {
return(paste(param(x), substitute(param)))
}
myFunction(y, mean)
# [1] "5.5 mean"