Как получить доступ к скрытым функциям, которые очень хорошо скрыты
Я пытаюсь изменить 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>