как узнать, какие функции в R помечены для отладки? - PullRequest
7 голосов
/ 23 октября 2009

Я сейчас использую debug() чаще, но иногда мне интересно, какие функции помечены для отладки. Я знаю, что вы можете использовать isdebugged(), чтобы узнать, помечена ли конкретная функция. Но есть ли способ для R перечислить все отлаживаемые функции?

Ответы [ 2 ]

7 голосов
/ 31 октября 2009

Это запутанно, но работает:

 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

Здесь я создал тестовую функцию, которую я отлаживаю.

2 голосов
/ 23 октября 2009

Если вы не хотели заниматься чем-то вроде написания функции для запуска всего через isdebugged (), я не думаю, что вы можете.

В debug.c функция do_debug проверяет, установлен ли флаг DEBUG для объекта. Существует только три функции R, которые вызывают вызов do_debug C: debug, undebug и isdebugged.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...