किसी फ़ंक्शन के भीतर, मैं लोकेल को बदलना चाहता हूं, कुछ सामान कर सकता हूं, फिर इसे अपरिवर्तित कर सकता हूं। क्योंकि दुष्प्रभाव खराब हैं।आर बदलने के लिए एक विश्वसनीय तरीका क्या है और फिर आर में लोकेल को अपरिवर्तित करें?
old_locale <- Sys.getlocale()
# do some stuff
Sys.setlocale(old_locale)
हालांकि, Sys.setlocale
एक category
और locale
तर्क की आवश्यकता है।
"LC_COLLATE=English_Australia.1252;LC_CTYPE=English_Australia.1252;LC_MONETARY=English_Australia.1252;LC_NUMERIC=C;LC_TIME=English_Australia.1252"
ठीक है:
दूसरी ओर, Sys.getlocale()
मुझे इस देता है। मैं शायद इस से निपट सकता हूं:
old_locale <- Sys.getlocale()
locale_key_values <- strsplit(strsplit(old_locale, ';')[[1]], '=')[[1]], '=')
locale_keys <- lapply(locale_key_values, getElement, name=1)
locale_values <- lapply(locale_key_values, getElement, name=2)
# do some stuff
mapply(Sys.setlocale, category=locale_keys, locale=locale_values)
समस्या हल हो गई!
... या यह है?
Sys.setlocale(locale='C')
Sys.getlocale()
अब "C"
रिटर्न! यह उपरोक्त मेरे कुंजी-मूल्य पार्सर के साथ काम नहीं करेगा।
और मुझे अचानक एहसास हुआ कि मुझे स्थानीय लोगों या स्ट्रिंग्स की श्रेणी के बारे में कुछ भी पता नहीं है जो Sys.getlocale()
वापस आ सकता है।
क्या किसी को स्थानीय राज्य को बचाने और पुनर्स्थापित करने के लिए एक विश्वसनीय तरीका पता है?
चालाक विचार, मेरी इच्छा है कि यह इतना आसान हो! Sys.setlocale बिल्कुल दो तर्क, एक श्रेणी और एक लोकेल लेता है। यह उदाहरण के लिए एक एलसी_MONETARY तर्क स्वीकार नहीं करेगा। मुझे आपका कोड चलाते समय निम्न त्रुटि मिलती है: 'त्रुटि (फ़ंक्शन (श्रेणी = "एलसी_ALL", लोकेल = ""): अप्रयुक्त तर्क ("एलसी_MONETARY = अंग्रेज़ी_ऑस्ट्रेलिया .1252", "एलसी_NUMERIC = सी", "एलसी_TIME = अंग्रेज़ी_ऑस्ट्रेलिया 0.1252 ")' – logworthy