как узнать, какие функции в R помечены для отладки?
Вопрос
Сейчас я использую debug ()
чаще, но иногда мне интересно, какие функции помечены для отладки. Я знаю, что вы можете использовать isdebugged ()
, чтобы узнать, помечена ли конкретная функция. Но есть ли способ для R перечислить все отлаживаемые функции?
Решение
Это запутанно, но работает:
find.debugged.functions <- function(environments=search()) {
r <- do.call("rbind", lapply(environments, function(environment.name) {
return(do.call("rbind", lapply(ls(environment.name), function(x) {
if(is.function(get(x))) {
is.d <- try(isdebugged(get(x)))
if(!(class(is.d)=="try-error")) {
return(data.frame(function.name=x, debugged=is.d))
} else { return(NULL) }
}
})))
}))
return(r)
}
Вы можете запустить его во всех своих средах следующим образом:
find.debugged.functions()
Или просто в вашем " .GlobalEnv " с этим:
> find.debugged.functions(1)
function.name debugged
1 find.debugged.functions FALSE
2 test TRUE
Здесь я создал тестовую функцию, которую я отлаживаю.
Другие советы
Если вы не хотите заниматься чем-то вроде написания функции для запуска всего через isdebugged (), я не думаю, что вы можете.
В debug.c функция do_debug
проверяет наличие флага DEBUG для объекта. Существует только три функции R, которые вызывают вызов do_debug
C: debug
, undebug
и isdebugged
.