Ich versuche, eine Variable aus einer Funktion in der globalen Umgebung zu speichern, aber keine der gefundenen Lösungen SO post oder different SO post funktionierte für mich. Dies ist ein extrem vereinfachtes Beispiel zur Veranschaulichung meines Problems. Ich kann nicht einfach <<-
verwenden, um v
global zu machen, weil meine eigentliche Funktion mehrere Dutzend Variablen erzeugt.Speichern von Variablen aus einer Funktion in der globalen Umgebung
-Code (main_file.R)
source("function_me.R")
#environment(doGlobalThing) <-parent.frame(2) #didnt work
doGlobalThing()
v #cant get to this var from the global environment
-Code (function_me.R)
doGlobalThing<-function(){
#eval(v<-'hi',env=parent.frame(2)) #tried this, didnt work
v<-'hi'
}
Arbeiten Sie nicht gegen das Design der Sprache. Lernen Sie die funktionale Programmierung. – Roland
@Roland, Können Sie (kurz) erklären, warum meine Idee, eine neue Menge globaler Variablen zu erstellen, in einer LEEREN globalen Umgebung falsch ist, die auf einem Grundsatz der funktionalen Programmierung basiert? – Rilcon42
Es gibt absolut keinen Vorteil, dies zu tun, als das, was Sie von der Funktion benötigen, z. B. in einer Liste, zurückzugeben. Wie Sie jedoch bemerken, stellt dies für Sie eine Belastung dar, die Sie beachten müssen, dass Ihre Funktion Site-Effekte aufweist und um sicherzustellen, dass dies keine Probleme verursacht. Und das bedeutet natürlich, dass Sie Ihren Code nicht wirklich anderen geben oder einfach wiederverwenden können. Die einzige Situation, in der dies Sinn macht, ist, wenn Sie versuchen, durch Referenz zu referenzieren und an Ort und Stelle zu modifizieren, aber dann sollten Sie es in einer anderen Umgebung als in der globalen tun (oder Referenzklassen verwenden). – Roland