Quando si esegue il debug di funzioni chiamando altre funzioni in molti livelli tramite il browser, è spesso difficile sapere quale livello immettere per l'ispezione di una particolare variabile. È criptico quando le funzioni contengono apply
, sapply
, lapply
chiamate che producono livelli intermedi. C'è un modo per cercare una variabile per nome su tutti i livelli dello stack?Ricerca di oggetti nello stack di chiamate quando si utilizza il browser
Diciamo che ho le seguenti funzioni, producendo un errore in f3
. Suppongo che quando si entra al livello 5 dovrei essere in grado di elencare il contenuto di qualsiasi ambiente sopra quello in cui mi trovo attualmente, usando l'argomento pos
o envir
in qualche modo, ma non riesco a capire come. Come posso, ad esempio, cercare v2
?
f1 <- function(){
v1 <- 1
sapply(1:3, f2)
}
f2 <- function(...){
v2 <- 2
f3()
}
f3 <- function(){
v3 <- 3
stop("Oh no!")
}
> options(error=recover)
> f1()
Error in f3() : Oh no!
Enter a frame number, or 0 to exit
1: f1()
2: #3: sapply(1:3, f2)
3: lapply(X = X, FUN = FUN, ...)
4: FUN(1:3[[1]], ...)
5: #3: f3()
Molto elegante, grazie! – Backlin