Как получить доступ к скрытым функциям, которые очень хорошо скрыты

Я пытаюсь изменить qgraph() Функция в пакете rgraph для внесения некоторых радикальных изменений в графические параметры. Но прежде чем пытаться внести эти изменения, я получил доступ к исходному коду для функции и перезагрузил его как новую функцию (т.е. qgraph2()) и запустите его на примере данных big5. Ошибка, которую я получаю читает could not find function "getArgs" и я подозреваю, что getArgs является скрытой функцией. Однако я не могу найти getArgs() в среде qgraph или глобальной среде r и не могу найти ни одной записи об этом в какой-либо документации (?getArgs, ??getArgs), поэтому я не знаю, откуда звонить или как узнать эту информацию. Более того, я подозреваю, что в функции qgraph() скрываются другие скрытые функции. Поэтому у меня двоякий вопрос: во-первых, как я могу узнать, где скрыт getArgs(), и получить к нему соответствующий доступ, а во-вторых, есть ли способ, позволяющий моей модифицированной функции qgraph2 получать доступ ко всем таким скрытым объектам, не вызывая их по отдельности. Спасибо.

1 ответ

Если вы знаете, где скрыта ваша функция, вы можете использовать ::: Оператор, чтобы увидеть его код.

Если вы этого не знаете, используйте 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>
Другие вопросы по тегам