我有数据和工作总结功能:
[data:] x = runif(100)
[function 1:] sapply(list("mean", "median", "sd"),
function(f) array(do.call(f, list(x)),
dimnames=list(f)))
mean median sd
0.5198142 0.5566567 0.3048372
以下也运行,但没有给出dimnames
:
[function 2:] sapply(list(mean, median, sd),
function(f) array(do.call(f, list(x))))
[1] 0.5198142 0.5566567 0.3048372
我尝试了 , , 等的各种组合,但未能成功quote()
地enquote()
给substitute()
我deparse()
与函数 2 相同的结果(其中未引用要应用的函数),就像我从函数 1 得到的一样。我想找到以下形式的东西,如果它存在,产生与函数 1 相同的结果:
[function 3:] sapply(list(mean, median, sd),
function(f) array(do.call(f, list(x)),
dimnames=list(SOMEFUNCTION(f))))
我对这个问题的理解是我需要使用将引用的函数,但mean
经过部分评估;我在这方面的所有尝试都失败了。 median
sd
f
我开始编写函数 3 之类的函数;重写为函数 1 是我可以获得所需输出的唯一方法,但是我不禁觉得有一些方法可以在没有函数 1 中的引号的情况下实现这一点。
由于这个领域对我来说有点困惑,除了提供代码之外,您能否解释一下为什么您的解决方案有效。
谢谢。