Angenommen, ich habe die folgende Funktion:Bindung außerhalb Variablen in R
g = function(x) x+h
Nun, wenn ich in meiner Umgebung haben ein Objekt h
genannt, würde ich kein Problem haben:
h = 4
g(2)
## should be 6
Jetzt , ich habe eine andere Funktion:
f = function() {
h = 3
g(2)
}
ich würde erwarten:
rm(h)
f()
## should be 5, isn't it?
Stattdessen bekomme ich einen Fehler
## Error in g(2) : object 'h' not found
Ich würde erwarten, g
in der Umgebung von f
ausgewertet werden, so dass die h
in f
wird die h in g gebunden sein, wie es war wenn ich g
innerhalb der .GlobalEnv
ausgeführt habe. Dies passiert nicht (offensichtlich). irgendeine Erklärung warum? wie man dies überwindet, so dass die Funktion innerhalb der Funktion (z.B. g
) unter Verwendung der umgebenden Umgebung bewertet wird?
ich keine Antwort, aber es scheint, als ob R für alle Variablen auf den globalen Bereich sieht entweder nicht in der definierten Funktionsaufruf oder als Parameter übergeben. –