Es scheint mindestens drei verschiedene Dinge, die Sie tun können:
- Klon
- Kopieren Sie den Inhalt von einer Umgebung in eine andere Umgebung eine Umgebung (eine exakte Kopie erstellen)
- Teilen der gleichen Umgebung
So zu klonen:
# Make the source env
e1 <- new.env()
e1$foo <- 1
e1$.bar <- 2 # a hidden name
ls(e1) # only shows "foo"
# This will clone e1
e2 <- as.environment(as.list(e1, all.names=TRUE))
# Check it...
identical(e1, e2) # FALSE
e2$foo
e2$.bar
den Inhalt zu kopieren, können Sie das tun, was @gsk zeigte. Aber auch hier die all.names
Flag ist nützlich:
# e1 is source env, e2 is dest env
for(n in ls(e1, all.names=TRUE)) assign(n, get(n, e1), e2)
Um die Umwelt zu teilen ist, was @koshke tat. Dies ist wahrscheinlich oft viel nützlicher. Das Ergebnis ist das gleiche, als wenn eine lokale Funktion erstellen:
f2 <- function() {
v1 <- 1
v2 <- 2
# This local function has access to v1 and v2
flocal <- function() {
print(v1)
print(v2)
}
return(flocal)
}
f1 <- f2()
f1() # prints 1 and 2
es ist eine vollständige Antwort –