आर

2011-05-31 19 views
9

में एक फ़ाइल से एक वेक्टर बनाना मैं आर के लिए नया हूं और मेरा प्रश्न छोटा होना चाहिए। मुझे एक txt फ़ाइल से शब्द क्लाउड बनाने की आवश्यकता है जिसमें शब्द और उनकी घटना संख्या शामिल है। उन प्रयोजनों के लिए मैं snippets package का उपयोग कर रहा हूं। जैसा कि यह लिंक के निचले हिस्से में देखा जा सकता है, सबसे पहले मुझे एक वेक्टर बनाना है (क्या यह सही है कि शब्द एक वेक्टर है?) जैसे।आर

> words <- c(apple=10, pie=14, orange=5, fruit=4) 

मेरी समस्या एक ही चीज़ करना है, लेकिन एक फ़ाइल से वेक्टर बनाना जिसमें शब्दों और उनकी घटना संख्या होगी। अगर आप मुझे कुछ संकेत दे सकते हैं तो मैं बहुत खुश हूं।

इसके अलावा, फ़ाइल के प्रारूप को समझने के लिए मैं एक फ़ाइल में वेक्टर शब्द लिखता हूं।

> write(words, file="words.txt") 

हालांकि, फ़ाइल words.txt केवल मान नहीं बल्कि नाम (सेब, पाई आदि) शामिल हैं।

$ cat words.txt 
10 14 5 4 

धन्यवाद।

+0

+1। मुझे उस बारे में पता नहीं था। –

उत्तर

5

words एक नामित वेक्टर, भेद cloud() समारोह के संदर्भ में महत्वपूर्ण है अगर मैं मदद सही ढंग से पढ़ा है।

एक फाइल करने के लिए बाहर सही ढंग से डेटा लिखें:

write.table(words, file = "words.txt") 

बनाया txt फ़ाइल की तरह अपने शब्द घटना फ़ाइल बनाएँ। जब आप इसे पढ़ आर में वापस, तो आप एक छोटे से हेरफेर करने की जरूरत है:

> newWords <- read.table("words.txt", header = TRUE) 
> newWords 
     x 
apple 10 
pie 14 
orange 5 
fruit 4 
> words <- newWords[,1] 
> names(words) <- rownames(newWords) 
> words 
apple pie orange fruit 
    10  14  5  4 

क्या हम newWords में यहाँ फ़ाइल पढ़ रहा है कर रहे हैं, subsetting यह एक और केवल स्तंभ (चर) लेने के लिए, जिसे हम words में स्टोर करते हैं। अंतिम चरण फ़ाइल नाम से पंक्ति नामों को पढ़ने और words वेक्टर पर "नाम" के रूप में लागू करने के लिए है। हम names() फ़ंक्शन का उपयोग करके अंतिम चरण करते हैं। स्निपेट पैकेज को इंगित करने के लिए

+1

एक लाइनर के लिए, 'as.matrix (read.table (' words.txt ')) का उपयोग करें, [, 1] '(मैट्रिक्स सबसेटिंग नाम प्रसारित करता है जबकि डेटा.फ्रेम नहीं करता है)। – Charles

3

हां, 'वेक्टर' उचित शब्द है।

संपादित करें:
एक बेहतर विधि की तुलना में write.table बचाने उपयोग करने के लिए किया जाएगा() और लोड():

save(words. file="svwrd.rda") 
load(file="svwrd.rda") 

सहेजें/लोड कॉम्बो बल्कि बलात्कार कर की तुलना में सभी संरचना संरक्षित। Write.table नामों के बाद() < - एक परेशानी है जैसा कि आप यहां गेविन के जवाब और रेलप पर मेरे उत्तर दोनों में देख सकते हैं।

प्रारंभिक उत्तर: सुझाव है कि आप डेटा को फ्रेम करने के लिए as.data.frame का उपयोग करें, फिर फ़ाइल लिखने के लिए लिखें.table()।

write.table(as.data.frame(words), file="savew.txt") 
saved <- read.table(file="savew.txt") 
saved 
     words 
apple  10 
pie  14 
orange  5 
fruit  4 
+0

लेकिन क्या ओपी घटना डेटा से उपयुक्त टेक्स्ट फ़ाइल बनाने और * उस * में पढ़ने के लिए नहीं चाहता है? 'Write.table()' व्यवसाय यह देखना था कि नाम को संरक्षित करते समय, आर में बाद के आयात के लिए फ़ाइल * को * प्रारूपित किया जाना चाहिए। –

+0

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

+0

आह, ठीक है। अभी तक आर-सहायता पोस्टिंग नहीं देखी है, उस ईमेल फ़ोल्डर पर थोड़ा पीछे है। –