come fai a sapere quali funzioni in R sono contrassegnate per il debug?
Domanda
Sto usando debug ()
più spesso ora, ma a volte mi chiedo quali funzioni siano state contrassegnate per il debug. So che puoi usare isdebugged ()
per scoprire se una particolare funzione è contrassegnata. Ma c'è un modo per R di elencare tutte le funzioni di cui è stato eseguito il debug?
Soluzione
Questo è contorto, ma funziona:
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)
}
Puoi eseguirlo in tutti i tuoi ambienti in questo modo:
find.debugged.functions()
O semplicemente nel tuo " .GlobalEnv " con questo:
> find.debugged.functions(1)
function.name debugged
1 find.debugged.functions FALSE
2 test TRUE
Qui ho creato una funzione di test di cui sto eseguendo il debug.
Altri suggerimenti
A meno che tu non voglia entrare in qualcosa come scrivere una funzione per sparare tutto con isdebugged (), non penso che tu possa.
In debug.c, la funzione do_debug
è ciò che controlla il flag DEBUG impostato su un oggetto. Esistono solo tre funzioni R che chiamano do_debug
C call: debug
, undebug
e isdebugged
.