আর তে গ্লোবাল ভেরিয়েবল


151

আমি ম্যানুয়ালগুলিতে kingোকাচ্ছি, আমি সম্প্রদায়টিকে জিজ্ঞাসা করতে চেয়েছিলাম: আমরা কোনও ফাংশনের অভ্যন্তরে কীভাবে বিশ্বব্যাপী পরিবর্তনগুলি সেট করতে পারি?

উত্তর:


174

assign()শো হিসাবে খ্রিস্টানদের উত্তর হিসাবে , বিশ্ব পরিবেশে নির্ধারিত করার একটি উপায় আছে। একটি সহজ, সংক্ষিপ্ত (তবে আরও ভাল নয় ... অ্যাসিস্ট সহ স্টিক) উপায়টি <<-অপারেটরটি ব্যবহার করা , অর্থাৎ

    a <<- "new" 

ফাংশন ভিতরে।


41
এই পদ্ধতির প্রকৃতপক্ষে বিশ্ব পরিবেশে সংরক্ষণ হয় না, পরিবর্তে পিতামাতার সুযোগে। কখনও কখনও পিতা বা মাতা স্কোপ বিশ্বব্যাপী পরিবেশের মতো হয়, যদিও কিছু ক্ষেত্রে প্রচুর নেস্টেড ফাংশন থাকে না it
লুন্যাটিকসোল

5
কেন assignপছন্দ করা হয় <<-?
জ্যাশা

4
@ জশা <<-বৈশ্বিক পরিবেশ পর্যন্ত ঘেরের শৃঙ্খলে অনুসন্ধান করবে এবং এটি খুঁজে পাওয়া প্রথম মিলের ভেরিয়েবলকে নিয়োগ করবে। Hypothetically, আপনি একটি ফাংশন আছে যদি f()একটি অবসান মধ্যে নেস্টেড g()এবং aবিদ্যমান g(), তারপর ব্যবহার a <<-মধ্যে f()নির্ধারিত হবে ag(), গ্লোবাল পরিবেশ না। প্রায়শই, আপনি যা চান এটি এটি।
বব

93

আমি কিভাবে একটি বিশ্বব্যাপী পরিবর্তনশীল সেট করার জন্য একটি সমাধান পাওয়া MAILINGLIST পোস্টিং মাধ্যমে বরাদ্দ :

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

1
: এছাড়াও এই পোস্টের গৃহীত উত্তর দেখার stackoverflow.com/questions/3969852/... একটি ফাংশন মধ্যে আপডেট dataframes জন্য
user1420372
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.