我想在使用函数的包中找到所有函数。通过functionB“使用” functionA,我的意思是存在一组参数,以便在给functionB这些参数时调用functionA。

同样,能够控制报告结果的水平也是很好的。例如,如果我有以下内容:

outer_fn <- function(a,b,c) {
    inner_fn <- function(a,b) {
        my_arg <- function(a) {
            a^2
        }
        my_arg(a)
    }
    inner_fn(a,b)
}

我可能会或可能不会在意inner_fn的报告。在大多数情况下可能不是,但是我认为这可能很难做到。

有人可以给我一些指导吗?

谢谢

最佳答案

查找功能用途的一个小步骤是查找功能名称的使用位置。这是一个有关如何执行此操作的小示例:

findRefs <- function(pkg, fn) {
  ns <- getNamespace(pkg)
  found <- vapply(ls(ns, all.names=TRUE), function(n) {
     f <- get(n, ns)
     is.function(f) && fn %in% all.names(body(f))
  }, logical(1))

  names(found[found])
}

findRefs('stats', 'lm.fit')
#[1] "add1.lm"  "aov"      "drop1.lm" "lm"       "promax"

...要走得更远,您需要分析主体以确保它是函数调用或类似apply的函数的FUN参数,或者是Map的f参数等...-所以在一般情况下,它是几乎找不到所有法律参考...

然后,您还应该真正检查从该函数环境中获取的名称是否返回了您要查找的相同函数(它可能使用具有相同名称的其他函数)...这实际上可以处理“内部函数”的情况。

关于r - 在使用功能的程序包中查找所有功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8174695/

10-10 18:24
查看更多