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


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.