2012-03-08 19 views
28

मुझे ए .txt या .csv फ़ाइल को पढ़ने के लिए आर प्राप्त करने में कठिनाई हो रही है जिसमें apostrophes शामिल हैं।आर में एस्ट्रोफेश युक्त एक .csv फ़ाइल को कैसे पढ़ा जाए?

मेरे कुछ स्तंभों में वर्णनात्मक टेक्स्ट शामिल है, जैसे "ग्राहकों की जरूरतों में भाग लेता है" या "शेरिफ के डिप्टी"। मेरी फ़ाइल Excel में ठीक से खुलती है (यानी, सभी डेटा सही कक्षों में दिखाई देते हैं; 3 कॉलम और लगभग 8000 पंक्तियां हैं, और कोई गुम डेटा नहीं है)।

अगर मैं .txt या .csv फ़ाइल में जाना

data <-read.table("datafile.csv", sep=",", header=TRUE) 
    Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : 
    line 520 did not have 3 elements 

(लाइन 520 पहली पंक्ति है कि एपोस्ट्रोफ़ी होता है।): लेकिन जब मैं आर पूछना फ़ाइल को पढ़ने के लिए, तो ऐसा होता है और मैन्युअल रूप से सभी apostrophes को हटा दें, फिर आर फ़ाइल को सही ढंग से पढ़ता है। हालांकि, अगर मैं कर सकता हूं तो मैं एस्ट्रोफ़ेस रखूंगा।

मैं आर के लिए नया हूं और किसी भी मदद के लिए आभारी हूं।

+0

मैं मूल रूप से यह जानता था कि मैं मूल रूप से यह जानता हूं, मुझे डेटा अधिग्रहण मशीन में उत्पन्न सीएसवी फ़ाइल में पढ़ने के दौरान "मिल गया" मिला। समस्या यह थी कि, एक बड़े हेडर ब्लॉक के अंदर, फ़ाइल में कुछ फ़ील्ड w/apostophes (एक अप्रत्याशित घटना) थीं। कभी-कभी आपको एक लेना पड़ता है स्रोत फ़ाइल में crapola पर सावधान देखो। –

उत्तर

31

डिफ़ॉल्ट रूप से, read.table वर्णों को उद्धृत करने के रूप में एकल और डबल उद्धरण देखता है। आपको quote="\"" को अपने read.table कॉल में जोड़ने की आवश्यकता है। या, आप केवल read.csv का उपयोग कर सकते हैं, जो डिफ़ॉल्ट रूप से वर्णों को उद्धृत करने के रूप में केवल डबल कोट्स देखता है।

+1

आपकी मदद के लिए धन्यवाद। दिलचस्प बात यह है कि, मुझे काम करने के लिए read.table के लिए सुझाए गए विकल्पों में से कोई भी नहीं मिला है ... लेकिन read.csv चाल करता है! – user1257313

+0

'read.csv' के साथ अन्य अंतर यह है कि इसका डिफ़ॉल्ट सेट' fill = TRUE' –

8

विकल्पों में अच्छी तरह से अध्ययन करना? Read.table लंबे समय तक भुगतान करेगा। वर्णों को उद्धृत करने के लिए डिफ़ॉल्ट मान उद्धरण = "\" '"है, जो वास्तव में आर वर्णों के बाद अभिव्यक्ति, सिंगल-कोट और डबल-कोट के बाद केवल दो वर्ण हैं। आप उन्हें quotes=NA का उपयोग करके दोनों को ध्यान से हटा सकते हैं। कभी-कभी यह भी आवश्यक है 'comment.char' को डिफॉल्ट करने के लिए "#" को हटा दें, और स्ट्रिंग को कारकों में परिवर्तित होने से रोकने के लिए 'as.is' को सही करने में मदद मिल सकती है।

+4

है, मुझे विश्वास है कि अब सबसे हालिया संस्करण के रूप में 'उद्धरण = NULL'' उद्धरण = NA' नहीं होना चाहिए। – JayCo

+0

मेरे पास एक ही समस्या थी, लेकिन एक सूची आयात करने की कोशिश कर रहा था जिसमें आयातित सूची में रहने वाले उद्धरण चिह्न थे। उद्धरणों का उपयोग = NULL ने मेरे लिए काम किया (जैसा कि नीचे दिया गया जवाब है, उद्धरण = "\\"। मैं "मदद पुस्तिका पढ़ें और उम्मीद है कि आप इसे पा सकते हैं" के बजाय वास्तविक उत्तरों की सराहना करते हैं। इसलिए मेरे मामले में मैंने> चर <- read.table ("datafile.txt", quote = NULL) और उद्धरण अच्छी तरह से –

1

पैरामीटर उद्धरण = "\\" सेट करना read.table चाल चलाना चाहिए।

+1

के माध्यम से आए, ठीक है, लेकिन क्या आपको पता चलेगा कि आप क्या करेंगे? –