में परिवर्तनीय नाम प्रतिबंध आर में एक चर नाम के लिए कौन से वर्ण (और शायद अन्य प्रतिबंध) का उपयोग किया जा सकता है, इस पर प्रतिबंध क्या हैं?आर
(यह सामान्य संदर्भ के चिल्लाती है, लेकिन मैं जवाब खोजने के लिए प्रतीत नहीं कर सकते हैं)
में परिवर्तनीय नाम प्रतिबंध आर में एक चर नाम के लिए कौन से वर्ण (और शायद अन्य प्रतिबंध) का उपयोग किया जा सकता है, इस पर प्रतिबंध क्या हैं?आर
(यह सामान्य संदर्भ के चिल्लाती है, लेकिन मैं जवाब खोजने के लिए प्रतीत नहीं कर सकते हैं)
आप ?make.names
से चर्चा की तलाश में हो सकता है:
एक वाक्य रचना मान्य नाम पत्र के होते हैं, संख्याएं और डॉट या अंडरलाइन वर्ण और एक अक्षर से शुरू होता है या डॉट किसी संख्या से नहीं चलता है। ".2way" जैसे नाम वैध नहीं हैं, और न ही आरक्षित शब्द हैं।
मदद फ़ाइल ही में, वहाँ आरक्षित शब्द है, जो कर रहे हैं की एक सूची के लिए एक लिंक है:
यदि किसी और दोहराने थोड़ी देर के लिए समारोह अगले तोड़ने में
सही गलत शून्य Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_ टिप्पणियों से
कई अन्य अच्छे नोट्सको जेम्स द्वारा बिंदु शामिलइस मुद्दे को संबोधित करते हुए और जोश के सूचक को संबंधित SO question को सिंटैक्टिक रूप से मान्य नामों की जांच करने से निपटने के लिए काम करते हैं।
ध्यान दें कि यदि आप अपना वैरिएबल नाम उद्धृत करते हैं तो आप कुछ भी इस्तेमाल कर सकते हैं, उदाहरण के लिए '' TRUE' <-2' मान्य है। मैं इस ठीक से इतना सिंटैक्स का उपयोग :( – James
बेशक नहीं लिख सकते हैं, मेरी समस्या मैं उलटा के लिए गूगल खोज रहा था ("प्रतिबंध") या मूल रूप से * अवैध * पात्रों जब मैं जाना चाहिए था * वैध * पात्रों के लिए खोज कर दिया गया था। –
इसके अलावा, अपने आप पर एक बिंदु मान्य है। '। = 3; प्रिंट (।)' –
लगभग कोई नहीं! हास्यास्पद चर नाम बनाने के लिए आप 'असाइन' का उपयोग कर सकते हैं:
assign("1",99)
ls()
# [1] "1"
हां, यह '1' नामक एक चर है। अंकों 1. सौभाग्य से यह पूर्णांक 1 का मूल्य बदल नहीं करता है और आप थोड़ा कठिन काम करने के लिए अपने मूल्य प्राप्त करने के लिए:
1
# [1] 1
get("1")
# [1] 99
"वाक्यात्मक प्रतिबंध" कुछ लोगों का उल्लेख विशुद्ध रूप से पार्सर द्वारा लगाया जाता है हो सकता है। मूल रूप से, बहुत कम है आप आर ऑब्जेक्ट को कॉल नहीं कर सकते हैं। आप इसे '< -' असाइनमेंट ऑपरेटर के माध्यम से नहीं कर सकते हैं। "प्राप्त करें" आपको नि: शुल्क सेट करेगा :)
क्या 'असाइन' और' get' का उपयोग करके _literally_ कोई प्रतिबंध नहीं है, या आप कुछ में भागते हैं ? कुछ बिंदु पर सीमाओं – joran
मेरा मानना है कि मुहावरा है :-P –
"बहुत हो रस्सी के साथ खुद को लटका" निर्दिष्ट: " 'नाम' पर कोई प्रतिबंध नहीं कर रहे हैं: यह ग एक गैर-वाक्य रचनात्मक नाम हो (देखें 'make.names')। "। यह निश्चित रूप से एक झूठ है: सी = पेस्ट (प्रतिनिधि (अक्षरों, 10000), पतन = ""); आवंटित (ग, 123) का उत्पादन: त्रुटि असाइन में (ग, 123): चर नाम 10000 बाइट्स तक सीमित हैं – Spacedman
निम्नलिखित आपके प्रश्न को सीधे संबोधित नहीं कर सकते हैं लेकिन बहुत मददगार हैं। exists()
कमांड को देखने के लिए प्रयास करें कि कुछ पहले से मौजूद है या नहीं और इस तरह आप जानते हैं कि आपको अपने चर या फ़ंक्शन के लिए सिस्टम नामों का उपयोग नहीं करना चाहिए। उदाहरण ...
> exists('for')
[1] TRUE
>exists('myvariable')
[1] FALSE
मुझे समझ में नहीं आता कि यह जवाब क्यों कम किया गया था, मेरे लिए यह किसी भी मामले में जानकारी का उपयोग करने योग्य टुकड़ा है। – Halberdier
make.names का उपयोग करना() आधार पैकेज में बनाया मदद मिल सकती है से समारोह:
is_valid_name<- function(x)
{
length_condition = if(getRversion() < "2.13.0") 256L else 10000L
is_short_enough = nchar(x) <= length_condition
is_valid_name = (make.names(x) == x)
final_condition = is_short_enough && is_valid_name
return(final_condition)
}
आर पूछे जाने वाले प्रश्न 7.14: http://cran.r-project.org /doc/FAQ/R-FAQ.html#What-are-valid-names_003f – James
आपको यहां चर्चा में रुचि भी हो सकती है: http://stackoverflow.com/questions/8396577/check-if-character-value-is -a-valid-r-object-name/8396658 # 8396658 –
आपको 'read.table' के लिए सहायता पृष्ठ में'? make.names' का लिंक मिलना चाहिए था। सहायता पृष्ठ मुझे हमेशा याद रखने में कठिनाई होती है वह स्वीकार्य बचने वाले वर्णों का वर्णन करती है और उत्तर 'उद्धरण' है। –