我有一个类似的问题this one,但更特殊的情况。获取分配给变量的函数名称R
考虑下面的示例代码:
fun1<-mean
fun2<-max
fun3<-median
现在,我想分配给变量charachter
S中的函数的名称。
虽然我明白this is not possible in general,上述情况似乎有点特殊:
l<-list(fun1=fun1,fun2=fun2,fun3=fun3)
l
$fun1
function (x, ...)
UseMethod("mean")
<bytecode: 0x2793818>
<environment: namespace:base>
$fun2
function (..., na.rm = FALSE) .Primitive("max")
$fun3
function (x, na.rm = FALSE)
UseMethod("median")
<bytecode: 0x28382c8>
<environment: namespace:stats>
所以print(funX)
输出包含分配给funX
函数的名称。
如何将这些信息提取到character
向量中?
THX很多关于你的好建议。你的第二个例子帮助我简化[我的解决方案](http://stackoverflow.com/a/35885909/2451238)。尽管如此,我还是无法将你的方法包装到一个函数中(如果'is.primitive'和'deparse'使用'findGeneric',否则,因为'funX'会在被传递时再次被复制(在我的例子中为'fun')在这种情况下,utils ::: findGeneric(as.character(quote(fun)),parent.frame())''''''也许这可以通过替换' parent.frame()'由另一个'envir'? – mschilli
Yes,'.GlobalEnv'。 – Roland
'sapply(l,function(fun)utils ::: findGeneric(as.character(quote(fun)),. GlobalEnv)) (函数(fun)utils ::: findGeneric(as.character(quote(fun)),parent.frame()))''before ... – mschilli