आर में वैश्विक चर


151

मैं नियमावली में पोज दे रहा हूं, मैं समुदाय से पूछना चाहता था: हम एक फ़ंक्शन के अंदर वैश्विक चर कैसे सेट कर सकते हैं?

जवाबों:


174

जैसा कि assign()शो के साथ ईसाई का जवाब है , वैश्विक वातावरण में असाइन करने का एक तरीका है। एक सरल, कम (लेकिन बेहतर नहीं ... असाइन के साथ छड़ी) जिस तरह से <<-ऑपरेटर का उपयोग करना है, अर्थात

    a <<- "new" 

फ़ंक्शन के अंदर।


41
यह दृष्टिकोण वास्तव में वैश्विक वातावरण में नहीं बचा है, बल्कि माता-पिता के दायरे में आता है। कभी-कभी माता-पिता का दायरा वैश्विक वातावरण के समान होगा, हालांकि कुछ मामलों में बहुत सारे नेस्टेड कार्यों के साथ यह नहीं होगा।
— LunaticSoul

5
क्यों assignपसंद किया जाता है <<-?
— जशा

4
@ जैशा <<-वैश्विक वातावरण तक के परिक्षेत्रों की श्रृंखला को खोजेगा और पहले मिलान वाले चर को खोजेगा । परिकल्पित है, तो आप एक समारोह है, तो f()एक बंद में नेस्ट g()और aमें मौजूद है g(), तो का उपयोग कर a <<-में f()करने के लिए आवंटित करेगा aमें g(), वैश्विक पर्यावरण के लिए नहीं। हालाँकि, यह वही है जो आप चाहते हैं।
— बॉब

93

मैं कैसे एक में एक वैश्विक चर सेट करने के लिए के लिए एक समाधान पाया मेलिंग पोस्टिंग के माध्यम से असाइन :

a <- "old"
test <- function () {
   assign("a", "new", envir = .GlobalEnv)
}
test()
a  # display the new value

1
इस पोस्ट का स्वीकृत उत्तर भी देखें: stackoverflow.com/questions/3969852/… एक फंक्शन के भीतर
— डेटाफ्रेम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.