Environments बनाना और निरीक्षण करना
Environments के साथ काम करने के लिए new.env(), environment(), ls() और get() का उपयोग करें।
Environments बनाना और निरीक्षण करना, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
नया परिवेश बनाना
new.env(parent = e) एक नया खाली परिवेश बनाता है। parent तर्क यह निर्धारित करता है कि नए परिवेश में नाम न मिलने पर किस परिवेश में खोज की जाएगी। पूरी तरह अलग-थलग परिवेश के लिए emptyenv() का उपयोग करें।
# Isolated environment (no parent chain)
e1 <- new.env(parent = emptyenv())
# Environment with global as parent
e2 <- new.env(parent = globalenv())
cat('e1 parent:', environmentName(parent.env(e1)), '\n')
cat('e2 parent:', environmentName(parent.env(e2)), '\n')assign() — बंधन जोड़ना
assign('name', value, envir = e) निर्दिष्ट परिवेश में नामित बंधन बनाता या अद्यतन करता है। यह e$name <- value के प्रोग्राम के माध्यम से किए गए समतुल्य है, लेकिन तब भी काम करता है जब नाम किसी चर में रखा गया हो।
e <- new.env(parent = emptyenv())
assign('x', 10, envir = e)
assign('y', 'hello', envir = e)
assign('z', TRUE, envir = e)
cat('x:', get('x', envir = e), '\n')
cat('y:', get('y', envir = e), '\n')get() और mget()
get('name', envir = e) एक बंधन प्राप्त करता है। mget(c('a','b'), envir = e) एक साथ कई बंधन प्राप्त करता है और नामित सूची लौटाता है। यदि नाम मौजूद न हो, तो दोनों त्रुटि उत्पन्न करते हैं (जब तक कि inherits श्रृंखला में खोज की अनुमति न दे)।
e <- new.env(parent = emptyenv())
e$alpha <- 1
e$beta <- 2
e$gamma <- 3
# Single
get('alpha', envir = e)
# Multiple
mget(c('alpha', 'beta', 'gamma'), envir = e)ls() — बंधनों की सूची
ls(envir = e) परिवेश e में बंधे सभी नामों का character वेक्टर लौटाता है। all.names = TRUE जोड़ने पर . से शुरू होने वाले नाम भी शामिल होते हैं (जो डिफ़ॉल्ट रूप से छिपे रहते हैं)। नाम वर्णक्रमानुसार लौटाए जाते हैं।
e <- new.env(parent = emptyenv())
e$b_val <- 2
e$a_val <- 1
e$.secret <- 'hidden'
cat('Default ls:', ls(envir = e), '\n')
cat('All names :', ls(envir = e, all.names = TRUE), '\n')inherits के साथ exists()
exists('name', envir = e, inherits = FALSE) केवल निर्दिष्ट परिवेश में जाँच करता है, उसके जनक परिवेशों में नहीं। inherits = TRUE (डिफ़ॉल्ट) होने पर यह जनक-श्रृंखला में भी खोज करता है। कड़ी स्थानीय जाँच के लिए inherits = FALSE का उपयोग करें।
parent_e <- new.env(parent = emptyenv())
parent_e$shared <- 42
child_e <- new.env(parent = parent_e)
# inherits=TRUE: finds shared in parent
cat('inherits TRUE:', exists('shared', envir = child_e, inherits = TRUE), '\n')
# inherits=FALSE: only looks in child
cat('inherits FALSE:', exists('shared', envir = child_e, inherits = FALSE), '\n')environmentName() और parent.env()
environmentName(e) किसी अंतर्निर्मित परिवेश का नाम लौटाता है ('R_GlobalEnv', 'package:base' आदि)। उपयोगकर्ता द्वारा बनाए गए परिवेश '' लौटाते हैं। parent.env(e) जनक परिवेश-वस्तु लौटाता है।
e <- new.env(parent = globalenv())
cat('Name of e :', environmentName(e), '\n')
cat('Parent of e :', environmentName(parent.env(e)), '\n')
cat('Name of global:', environmentName(globalenv()), '\n')परिवेशों के लिए $ वाक्यविन्यास
परिवेश बंधनों को पढ़ने और लिखने के लिए सूचियों की तरह $ और [[ वाक्यविन्यास का समर्थन करते हैं। जब लिखते समय नाम ज्ञात हो, तब सीधे पहुँच के लिए यह अक्सर get()/assign() से अधिक सुविधाजनक होता है।
e <- new.env(parent = emptyenv())
e$pi_approx <- 3.14159
e[['e_approx']] <- 2.71828
cat('pi:', e$pi_approx, '\n')
cat('e :', e[['e_approx']], '\n')किसी विशिष्ट परिवेश में rm()
rm('name', envir = e) किसी विशिष्ट परिवेश से बंधन हटा देता है। यह वैश्विक चर हटाने से अलग है — अनुकूलित परिवेशों के साथ काम करते समय आपको परिवेश स्पष्ट रूप से निर्दिष्ट करना होगा।
e <- new.env(parent = emptyenv())
e$keep <- 1
e$remove_me <- 99
cat('Before:', ls(envir = e), '\n')
rm('remove_me', envir = e)
cat('After :', ls(envir = e), '\n')परिवेश को निकालने के लिए as.list()
as.list(e) किसी परिवेश के सभी बंधनों को नामित सूची में बदल देता है, जिससे उसकी सामग्री की जाँच या क्रमबद्ध भंडारण आसान हो जाता है। परिणाम एक स्थिति-चित्र होता है — बाद में परिवेश में किए गए परिवर्तन सूची में दिखाई नहीं देते।
e <- new.env(parent = emptyenv())
e$x <- 10
e$y <- 20
e$z <- 30
bindings <- as.list(e)
cat('Class:', class(bindings), '\n')
cat('Length:', length(bindings), '\n')
str(bindings)हैश तालिकाओं के रूप में परिवेश
new.env() में hash = TRUE विकल्प (जनक सेट होने पर डिफ़ॉल्ट) हैश-आधारित खोज सक्षम करता है, जिससे नाम की खोज O(1) हो जाती है। इसके कारण बड़े परिवेशों में कुंजी-मान भंडारण सूचियों की तुलना में बहुत तेज़ होता है।
# Build a small key-value store
store <- new.env(hash = TRUE, parent = emptyenv())
keys <- paste0('key_', 1:5)
values <- c(10, 20, 30, 40, 50)
for (i in seq_along(keys)) assign(keys[i], values[i], envir = store)
# Retrieve
cat('key_3 =', get('key_3', envir = store), '\n')
cat('All keys:', ls(store), '\n')पर्यावरणों की प्रतिलिपि बनाम साझा करना
किसी पर्यावरण को नए चर को निर्दिष्ट करने पर उसकी प्रतिलिपि नहीं बनती—दोनों चर उसी ऑब्जेक्ट का संदर्भ देते हैं। यदि आपको स्वतंत्र पर्यावरण चाहिए, तो वास्तविक प्रतिलिपि बनाने के लिए as.list() और फिर list2env() का उपयोग करें।
e1 <- new.env(parent = emptyenv())
e1$val <- 100
e2 <- e1 # reference, not a copy
e2$val <- 999
cat('e1$val:', e1$val, '\n') # 999, modified via e2!
# True copy:
e3 <- list2env(as.list(e1), parent = emptyenv())
e3$val <- 0
cat('e1$val after e3 change:', e1$val, '\n') # still 999त्वरित जाँच
कौन-सा फ़ंक्शन यह जाँचता है कि कोई नाम किसी पर्यावरण में बंधा हुआ है या नहीं, उसके पैरेंट पर्यावरणों में खोज किए बिना?
पर्यावरण बनाने की मुख्य बातें
पर्यावरण बनाने और उनका निरीक्षण करने की मुख्य बातें:
new.env(parent=e)एक नया खाली पर्यावरण बनाता है; बड़े संग्रहों के लिएhash=TRUEका उपयोग करें- प्रोग्राम के माध्यम से पहुँच के लिए
assign('x', v, envir=e)औरget('x', envir=e)का उपयोग करें e$xऔरe[['x']]सूची के एक्सेसर की तरह काम करते हैंls(envir=e)नामों की सूची देता है; सख्त जाँच के लिएexists('x', envir=e, inherits=FALSE)का उपयोग करेंas.list(e)सामग्री को सूची में बदलता है;list2env()से पर्यावरण फिर बनाया जाता है- पर्यावरण संदर्भ ऑब्जेक्ट होते हैं—असाइन करने पर साझा होते हैं, प्रतिलिपि नहीं बनते
config <- new.env(hash = TRUE, parent = emptyenv())
assign('host', 'localhost', envir = config)
assign('port', 5432L, envir = config)
assign('db', 'mydb', envir = config)
cat('Keys :', ls(config), '\n')
cat('host :', config$host, '\n')
cat('port :', config$port, '\n')एआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “Environments बनाना और निरीक्षण करना” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Environments बनाना और निरीक्षण करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Environments बनाना और निरीक्षण करना” में मैं क्या सीखूँगा?
Environments के साथ काम करने के लिए new.env(), environment(), ls() और get() का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“Environments बनाना और निरीक्षण करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- R में Environment क्या है?
- Lexical Scoping के नियम
- Global बनाम Local Scope
- Environments बनाना और निरीक्षण करना