2015-02-21 3 views
7

Was ist der Eltern-Frame von R. Übrigens, was bedeutet Eltern-Frame? Ich schätze, es ist die definierende Umgebung, anstatt die Umgebung aufzurufen, da R lexikalisches Scoping verwendet, aber ich bin mir nicht sicher. Vielen Dank.Was ist der Eltern-Frame von R

+2

das Lesen Sie auch: http://adv-r.had.co.nz/Environments.html#calling-environments –

Antwort

12

Nun, aus der ?parent.frame Hilfeseite

Der übergeordnete Rahmen einer Funktionsauswertung ist die Umgebung, in der die Funktion aufgerufen wurde. Es ist nicht unbedingt eine Nummer weniger als die Rahmennummer der aktuellen Auswertung nummeriert, noch ist es die Umgebung, in der die Funktion definiert wurde. sys.parent gibt die Nummer des übergeordneten Rahmen, wenn n 1 (Standardwert) ist, die Großeltern, wenn n 2 ist, und so weiter

und auch

Streng, sys.parent und Mutter .frame bezieht sich auf den Kontext der übergeordneten interpretierten Funktion. So können interne Funktionen (die Kontexte setzen können oder auch nicht und daher nicht auf dem Aufruf-Stack erscheinen) möglicherweise nicht gezählt werden, und S3-Methoden können auch überraschende Dinge tun.

Also bezieht sich der parent.frame auf die Umgebung, in der die Funktion aufgerufen wurde, nicht wo sie definiert wurde.

Zum Beispiel

parentls <- function() { 
    ls(envir=parent.frame()) 
} 

a<-function() { 
    x <- 5 
    parentls() 
} 

b <- function() { 
    z <- 10 
    parentls() 
} 

a() 
# [1] "x" 
b() 
# [1] "z" 
parentls() 
# [1] "a"  "b"  "parentls" 

Hier parentls() hat eine ls() im parent.frame. Und wenn wir innerhalb von a() oder b() laufen, sehen wir nur die Variablen innerhalb dieser Funktionen. Wenn es selbst aufgerufen wird, gibt es Ihnen einfach alle Variablen in Ihrer globalen Umgebung, so als ob Sie selbst ls() aufgerufen hätten.

Sie können mehr über geordneten Frames in der Closure section oder Calling Environment section von Hadely Advanced R. lesen

+0

wie erklärt man: z = get ('dens', envir = parent.frame (1)) in R? Vielen Dank –

Verwandte Themen