如何访问隐藏得很好的隐藏函数

时间:2017-07-26 11:39:06

标签: r r-qgraph

我正在尝试修改r package qgraph中的Begin = 12:00:00, End = 12:29:59函数,以对图形参数进行一些重大更改。但在尝试这些修改之前,我已经访问了函数的源代码并将其重新加载为新函数(即qgraph())并在big5示例数据上运行它。我收到的错误读取qgraph2(),我怀疑getArgs是一个隐藏的函数。 但是,我在qgraph环境或r全局环境中找不到getArgs(),并且在任何r文档(could not find function "getArgs"?getArgs)中找不到它的任何记录,所以我不知道知道从何处调用它或如何找出该信息。而且,我怀疑在qgraph()函数中潜伏着更多的隐藏函数。 所以我的问题是双重的:首先,我如何找出隐藏getArgs()的位置并相应地访问它,其次,有没有办法允许我修改的函数qgraph2访问所有这些隐藏的对象而不单独调用它们。 谢谢。

1 个答案:

答案 0 :(得分:4)

如果您知道自己的功能隐藏在哪里,可以使用:::运算符查看其代码。

如果您不知道,请使用getAnywhere。它还会告诉你,你寻找的功能在哪里。

getAnywhere(getArgs)
A single object matching ‘getArgs’ was found
It was found in the following places
  namespace:qgraph
with value

function (args) 
{
    if (length(args) > 0) {
        isqgraph <- sapply(args, function(x) "qgraph" %in% class(x))
        argLists <- c(lapply(args[isqgraph], "[[", "Arguments"), 
            lapply(args[isqgraph], "[", "layout"))
        args <- args[!isqgraph]
        newArgs <- lapply(argLists, getArgs)
        for (l in newArgs) args <- c(args, l[!names(l) %in% names(args)])
    }
    return(args)
}
<bytecode: 0x000000001e900d50>
<environment: namespace:qgraph>




> qgraph:::getArgs
function (args) 
{
    if (length(args) > 0) {
        isqgraph <- sapply(args, function(x) "qgraph" %in% class(x))
        argLists <- c(lapply(args[isqgraph], "[[", "Arguments"), 
            lapply(args[isqgraph], "[", "layout"))
        args <- args[!isqgraph]
        newArgs <- lapply(argLists, getArgs)
        for (l in newArgs) args <- c(args, l[!names(l) %in% names(args)])
    }
    return(args)
}
<bytecode: 0x000000001e900d50>
<environment: namespace:qgraph>