वहाँ कम से कम 3 अलग अलग चीजें आप कर सकते हैं होने लगते हैं एक वातावरण f1 अंदर की ओर इशारा करते होना करने के लिए प्राप्त करने होंगे:
- एक (एक सटीक डुप्लिकेट बनाने) पर्यावरण
- कॉपी एक और पर्यावरण
- शेयर एक ही पर्यावरण के लिए एक माहौल की सामग्री क्लोन
क्लोन करने के लिए:
# 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
सामग्री की प्रतिलिपि के लिए, आपको @gsk क्या दिखाया कर सकते हैं। लेकिन फिर, all.names
झंडा उपयोगी है:
# e1 is source env, e2 is dest env
for(n in ls(e1, all.names=TRUE)) assign(n, get(n, e1), e2)
पर्यावरण साझा करने के लिए @koshke क्या किया है। यह शायद अक्सर अधिक उपयोगी है। परिणाम एक ही है एक स्थानीय समारोह बनाने के रूप में यदि:
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
यह एक पूरा उत्तर है –