parent.env
वह वातावरण है जिसमें एक बंद (उदा।, फ़ंक्शन) परिभाषित किया गया है। parent.frame
वह वातावरण है जहां से बंद किया गया था।
f = function()
c(f=environment(), defined_in=parent.env(environment()),
called_from=parent.frame())
g = function()
c(g=environment(), f())
और फिर
> g()
$g
<environment: 0x14060e8>
$f
<environment: 0x1405f28>
$defined_in
<environment: R_GlobalEnv>
$called_from
<environment: 0x14060e8>
मुझे यकीन है कि जब एक मात्र नश्वर कभी वास्तव में उन्हें का उपयोग करना चाहते हैं नहीं कर रहा हूँ, लेकिन अवधारणाओं शाब्दिक गुंजाइश यहाँ
> f = function() x
> g = function() { x = 2; f() }
> h = function() { x = 3; function() x }
> x = 1
> f()
[1] 1
> g()
[1] 1
> h()()
[1] 3
को समझने में उपयोगी होते हैं या आर के परिचय में रहस्यमय 'बैंक खाता' उदाहरण में ?parent.frame
के विवरण खंड का पहला अनुच्छेद चीजों को स्पष्ट कर सकता है।
वातावरण आर में व्यापक हैं, उदाहरण के लिए, search()
पथ (लगभग) वातावरण एक भाई -> अभिभावक संबंध में एक साथ बंधे हैं। कभी-कभी env = new.env(parent=emptyenv())
को प्रतीक लुक-अप को रोकने के लिए देखता है - आम तौर पर env[["x"]]
env
में पहले दिखाई देगा, और फिर env
के माता-पिता में नहीं मिलेगा। इसी तरह, <<-
parent.env
में असाइनमेंट की तलाश में है। आर में अपेक्षाकृत नया संदर्भ वर्ग कार्यान्वयन इन विचारों पर निर्भर करता है ताकि एक उदाहरण-विशिष्ट वातावरण को परिभाषित किया जा सके जिसमें प्रतीक (उदाहरण फ़ील्ड और विधियां) पाई जा सकें।
स्रोत
2011-09-16 02:35:47