2012-07-18 37 views
18

के लिए फ़ैक्टर सेटिंग्स सेटिंग्स मेरे पास एक फ़ंक्शन है जिसमें मैं data.frame परिभाषित करता हूं कि मैं डेटा भरने के लिए लूप का उपयोग करता हूं।स्ट्रिंग बदलें डेटा.फ्रेम

चेतावनी संदेश: 1: [<-.factor में (*tmp*, iseq, value = "बदलें"): कुछ बिंदु पर मैं चेतावनी संदेश मिलता है अमान्य कारक स्तर, NAS

इसलिए उत्पन्न, जब मैं अपना डेटा परिभाषित करता हूं। फ्रेम, मैं विकल्प stringsAsFactors से FALSE पर सेट करना चाहता हूं लेकिन मुझे समझ में नहीं आता कि यह कैसे करें।

मैं कोशिश की है:

DataFrame = data.frame(stringsAsFactors=FALSE) 

और यह भी:

options(stringsAsFactors=FALSE) 

stringsAsFactors विकल्प सेट करने के लिए सही तरीका क्या है?

+0

देखें http://stackoverflow.com/questions/2851015/r-convert-data-frame-columns-from-factors-to-characters – GSee

उत्तर

26

यह इस बात पर निर्भर करता है कि आप अपना डेटा फ्रेम कैसे भरते हैं, जिसके लिए आपने कोई कोड नहीं दिया है। इस मामले में

x <- data.frame(aName = aVector, bName = bVector, stringsAsFactors = FALSE) 

, अगर उदहारण के लिए: जब आप एक नया डेटा फ्रेम का निर्माण, तो आप इस तरह टी क्या कर सकते हैं aVector एक चरित्र वेक्टर है, तो डेटाफ्रेम कॉलम x$aName एक चरित्र वेक्टर भी होगा, न कि एक कारक। मौजूदा डेटा फ्रेम के साथ संयोजन (rbind, cbind या इसी तरह का उपयोग करके) उस मोड को संरक्षित करना चाहिए।

जब आप निष्पादित

options(stringsAsFactors = FALSE) 

आप वैश्विक डिफ़ॉल्ट सेटिंग बदल जाते हैं। इसलिए उस लाइन को निष्पादित करने के बाद आपके द्वारा बनाए गए प्रत्येक डेटा फ्रेम को तब तक कारकों में स्वतः रूपांतरित नहीं किया जाएगा जब तक कि स्पष्ट रूप से ऐसा करने के लिए कहा न जाए। यदि आपको केवल एक ही स्थान पर रूपांतरण से बचने की आवश्यकता है, तो मैं डिफ़ॉल्ट को बदलना नहीं चाहूंगा। हालांकि अगर यह आपके कोड में कई स्थानों को प्रभावित करता है, तो डिफ़ॉल्ट बदलना एक अच्छा विचार लगता है।

एक और बात: यदि आपका वेक्टर पहले से ही एक कारक है, तो उपरोक्त में से कोई भी इसे एक चरित्र वेक्टर में बदल देगा। ऐसा करने के लिए, आपको as.character या इसी तरह का उपयोग करके इसे स्पष्ट रूप से वापस परिवर्तित करना चाहिए।

+0

'एक और बात' के लिए धन्यवाद, ऐसा लगता है कि मेरी त्रुटि उस से आती है। – VincentH