7

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

4

1 回答 1

12

如果你知道你的函数隐藏在哪里,你可以使用:::操作符来查看它的代码。

如果您不知道这一点,请使用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>
于 2017-07-26T11:47:17.337 回答