2010-08-27 6 views
8

आर का उपयोग करना, मैं बस की तरह एक चर में एक फ़ाइल की सामग्री को पढ़ना चाहते हैं: आर स्क्रिप्ट अपने आप में डाल, ठीक है, बड़ा लंबा प्रश्नों से बचने के लिएआर: एक प्रश्न के रूप में पाठ फ़ाइल की सामग्री पढ़ें?

query <- read_file_contents('biglongquery.sql') 

के रूप में। मैं नहीं CSV जैसे डेटा में पढ़ना चाहता हूं (उदा। read.tables), आदि- केवल कच्चा टेक्स्ट।

+0

मुझे लगता है कि बनाने के लिए है 'scan' ऐसा कर सकते हैं लेकिन मुझे यकीन नहीं है (इसलिए इसे उत्तर के रूप में पोस्ट नहीं करना) – zwol

+1

क्या कोई कारण है कि आप 'biglongquery' का दृश्य नहीं देखना चाहते हैं? फिर आप अपने 'एसक्यूएल' डेटाबेस से कनेक्ट करने के लिए 'RODBC' पैकेज का उपयोग कर सकते हैं और 'myShortView' से चुनें * या जो कुछ भी उचित हो। – Chase

+0

मैं चेस से सहमत हूं, विचारों को टेबल की तरह पढ़ा जा सकता है, मुझे लगता है कि आर भी अंतर नहीं करता है। –

उत्तर

10

स्कैन नौकरी करता है, लेकिन इस उद्देश्य के लिए फ़ंक्शन वास्तव में पढ़ा जाता है()।

query <- readLines("biglongquery.sql") 

यह आपको लाइनों के साथ एक वेक्टर देता है। उन्हें एक एकल चर में जोड़ने के लिए, आप पेस्ट फ़ंक्शन का उपयोग कर सकते हैं, उदा।

one.variable <- paste(query,collapse="\n") 
+2

और यदि कोई इसका उपयोग करता है बहुत कुछ 'readQuery <-फंक्शन (फ़ाइल) पेस्ट (रीडलाइन (फ़ाइल), पतन = "\ n")' उपयोगी हो सकता है। – Marek

+0

पहले विभाजन पर सभी मेमोरी काम के अलावा और फ़ाइल में लाइनों को पुन: संयोजित करने के अलावा, इस विधि का नुकसान है कि कोई पिछली नई लाइन खो जाएगी। इसके अलावा, आपने लाइन टर्मिनेटर को \ n करने के लिए सामान्यीकृत किया है। –

+0

@ ओलिवरबॉक यह सही है। मेरे ज्ञान के लिए, कोई फ़ंक्शन नहीं है जो पूरी फ़ाइल की सामग्री को पढ़ता है और इसे एक मान के रूप में संग्रहीत करता है। और आर आमतौर पर लाइन टर्मिनेटर के रूप में \ n के साथ काम करता है, लेकिन आप जो भी चाहते हैं उसका उपयोग कर सकते हैं। –

2
x <- paste(scan("foo.sql",what="",sep="\n",blank.lines.skip=FALSE),collapse="\n") 
0

एक और तरीका है क्वेरी परिभाषा के साथ एक आर स्क्रिप्ट

# content of biglongquery.R 
query <- " 
SELECT 
    very_long_list_of_fields 
FROM ... 
" 

और फिर मुख्य लिपि में इसका इस्तेमाल का उपयोग कर

source("biglongquery.R") 
संबंधित मुद्दे