0

nehme ich eine Funktion von einem Client erhaltenR: alle Variablen lokal für die Funktion der globalen Umwelt befestigen, nachdem sie führt

f <- function(x) { 
    if (x) { 
    y <- 0 
    } else { 
    y <- 1 
    } 
} 

Da ich es von einem Client bekomme ich nichts innerhalb f ändern (aka Ersatz < - mit < < -, oder explizit an die globale Umgebung Variablen anhängen).

Gibt es eine Möglichkeit, irgendwie auf alle Variablen zuzugreifen, die in f erstellt wurden, mit den Werten, die ihnen zugewiesen wurden (nachdem ich sie ausgeführt habe) aus der globalen Umgebung? Ich wäre in der Lage, um eine Variable „y“ Zugriff auf die globale Umwelt, wenn ich

f(TRUE) 

lief und sehen, dass es wird auf „0“: Zum Beispiel. Ich mache mir keine Sorgen darüber, irgendetwas in der globalen Umgebung zu überschreiben.

Danke!

Antwort

0

Option 1, in der Elternumgebung passieren:

f <- function(x, env = parent.frame()) { 
    if (x) { 
    env$y <- 0 
    } else { 
    env$y <- 1 
    } 
} 

Option 2 verwenden R Spezialauftrag <<-

f <- function(x) { 
    if (x) { 
    y <<- 0 
    } else { 
    y <<- 1 
    } 
} 

Es Mehr Optionen gibt es auch. Siehe Thema: In R, how to make the variables inside a function available to the lower level function inside this function?(with, attach, environment)

+0

Keine von diesen scheint zu passen OPs "* kann nichts in der Funktion *" -Anforderung ändern ... – Gregor