In R terminologia, si vogliono studiare nel frame principale dell'ambiente valutazione g()
s'(cioè l'ambiente in cui è stato chiamato g
). Le funzioni per farlo sono documentate nella pagina di aiuto per ?sys.parent
.
Una volta che il browser indica che si è 'debugging in g(x + 1)'
, è possibile effettuare quanto segue. (Grazie a Joshua Ulrich per suggerire where
per aiutare a localizzare quelle posizione nella stack di chiamate.)
# Confirm that you are where you think you are
where
# where 1 at #3: g(x + 1)
# where 2: f()
# Get a reference to g()'s parent frame (an environment object)
pframe <- parent.frame()
pframe
# <environment: 0x019b9174>
# Examine the contents of the parent frame
ls(env=pframe)
# [1] "x"
# Get the value of 'x' in the parent frame
get("x", env = pframe)
# [1] 1
EDIT: Per comprendere la raccolta di funzioni descritte nel ?sys.parent
, è probabilmente la pena notare che parent.frame()
è (praticamente) abbreviazione di sys.frame(sys.parent(1))
. Se ti trovi in un ambiente di valutazione più in basso di uno stack di chiamate (come rivelato da where
, ad esempio), puoi raggiungere gli ambienti più lontani dallo stack di chiamate (ad esempio due gradini) da parent.frame(2)
o da sys.frame(sys.parent(2))
.
fonte
2012-03-21 03:27:46
Digitando 'where' mentre nel browser sembra che sarebbe utile determinare quanti fotogrammi è necessario andare. –
Grazie a @Joshua per questo suggerimento molto utile. L'ho preso direttamente dal tuo commento e incollato nella parte superiore del blocco di codice. –
Grazie a tutti per le risposte eccellenti. – Alex