मैं एक आर पैकेज लिख रहा हूं जहां आर कोड जावा एप्लिकेशन से बात करता है। जावा एप्लिकेशन एक CSV स्वरूपित स्ट्रिंग आउटपुट करता है और मैं चाहता हूं कि आर कोड स्ट्रिंग को सीधे पढ़ने और इसे डेटा.फ्रेम में परिवर्तित करने में सक्षम हो।क्या आर में फ़ाइल की बजाय स्ट्रिंग मान से पढ़ने के लिए read.csv का उपयोग करने का कोई तरीका है?
उत्तर
हाँ, textConnection()
के लिए मदद को देखो - बहुत शक्तिशाली आर में धारणा है कि अनिवार्य रूप से (read.table()
और उसके संस्करण जैसे के रूप में) सभी पाठकों इन कनेक्शन वस्तु, जिसके कारण फ़ाइल हो सकता है, या एक दूरस्थ का उपयोग है यूआरएल, या किसी अन्य ऐप से आने वाली पाइप, या ... आपके मामले में कुछ पाठ।
एक ही चाल यहाँ तथाकथित दस्तावेज़ों के लिए प्रयोग किया जाता है:
> lines <- "
+ flim,flam
+ 1.2,2.2
+ 77.1,3.14
+ "
> con <- textConnection(lines)
> data <- read.csv(con)
> close(con)
> data
flim flam
1 1.2 2.20
2 77.1 3.14
>
ध्यान दें कि यह एक सरल कुछ के निर्माण के लिए रास्ता है, लेकिन यह भी सभी के बार-बार पार्स की वजह से महंगा है डेटा। जावा से आर तक पहुंचने के अन्य तरीके हैं, लेकिन इससे आपको जल्दी से जाना चाहिए। क्षमता अगले आता है ...
एक 7 वर्षीय जवाब संपादित करना: अब तक, यह जो read.csv()
और समान रूप से जोड़ दिया गया है text=
तर्क को ज्यादा सरल धन्यवाद है:
R> data <- read.csv(text="flim,flam
+ 1.2,2.2
+ 77.1,3.14")
R> data
flim flam
1 1.2 2.20
2 77.1 3.14
R>
हाल के आर संस्करणों में एक सरल तंत्र है, इस धागे में @ एडम ब्रैडली द्वारा उत्तर देखें: http://stackoverflow.com/a/16349171/17523 –
हाँ। उदाहरण के लिए:
string <- "this,will,be\na,data,frame"
x <- read.csv(con <- textConnection(string), header=FALSE)
close(con)
#> x
# V1 V2 V3
#1 this will be
#2 a data frame
मान लीजिए आप एक फ़ाइल बुलाया tommy.csv है (हाँ, कल्पनाशील, मुझे पता है ...)
col1 col2 \ n 1 1 \ N 2 की सामग्री है कि 2 \ n 3 3
जहां प्रत्येक पंक्ति एक बचने वाले चरित्र "\ n" से अलग होती है।
यह फ़ाइल read.table
में allowEscapes
तर्क की सहायता से पढ़ी जा सकती है।
> read.table("tommy.csv", header = TRUE, allowEscapes = TRUE)
col1 col2
1 col1 col2
2 1 1
3 2 2
4 3 3
यह सही नहीं है (कॉलम नाम संशोधित करें ...), लेकिन यह एक शुरुआत है।
यह फ़ंक्शन डिर्क के उत्तर को सुविधाजनक रूप में लपेटता है। एसओ पर सवालों के जवाब देने के लिए यह शानदार है, जहां पूछने वाले ने सिर्फ स्क्रीन पर डेटा डाला है।
text_to_table <- function(text, ...)
{
dfr <- read.table(tc <- textConnection(text), ...)
close(tc)
dfr
}
इसका उपयोग करने के लिए, पहले ऑनस्क्रीन डेटा कॉपी करें और अपने टेक्स्ट एडिटर में पेस्ट करें।
foo बार baz
1 2 एक
3 4 ख
अब text_to_table
, उद्धरण और read.table
के लिए किसी अन्य तर्क के साथ लपेट।
text_to_table("foo bar baz
1 2 a
3 4 b", header = TRUE)
ध्यान दें कि आर के अब वर्तमान संस्करण में, आप अब textConnection()
जरूरत है, यह बस यह करने के लिए संभव है:
> states.str='"State","Abbreviation"
+ "Alabama","AL"
+ "Alaska","AK"
+ "Arizona","AZ"
+ "Arkansas","AR"
+ "California","CA"'
> read.csv(text=states.str)
State Abbreviation
1 Alabama AL
2 Alaska AK
3 Arizona AZ
4 Arkansas AR
5 California CA
मुझे पता है कि यह थोड़ा देर हो चुकी है लेकिन - शायद यह उपयोगी हो सकती है इसे स्वीकार किए गए उत्तर में एक संपादन के रूप में सबमिट करने के लिए, क्योंकि यह संभावना नहीं है कि ओपी अब स्वीकार किए गए उत्तर को बदल देगा, फिर भी यह अब बेहतर उत्तर लगता है? – obfuscation
आईएमएचओ, ओपी को स्वीकार किए गए उत्तर को अस्वीकार कर देना चाहिए, और इसे स्वीकार करना चाहिए ... – Mischa
- 1. क्या रिक्त स्थान की बजाय टैब का उपयोग करने का कोई तरीका है?
- 2. रूबी/रेल का उपयोग || मूल्य निर्धारित करने के लिए, एक शून्य मान के बजाय कोई रिक्त स्ट्रिंग का उपयोग कर
- 3. क्या आर में स्मृति फ़ाइलों को पढ़ने और लिखने का कोई तरीका है?
- 4. क्या LINQ में मान सेट करने का कोई तरीका है?
- 5. क्या फॉग और कैरियरवेव का उपयोग करके फ़ाइल ऑब्जेक्ट को पढ़ने का कोई तरीका है?
- 6. क्या एक्सकोड 4 में अंगूठे के बजाय एआरएम के लिए संकलन करने का कोई तरीका है?
- 7. अज्ञात आकार फ़ाइल से पढ़ने के लिए बफर का उपयोग
- 8. क्या सी # में किसी संपत्ति के लिए डिफ़ॉल्ट मान सेट करने का कोई शानदार तरीका है?
- 9. .net: क्या नीचे से ऊपर तक एक txt फ़ाइल पढ़ने का कोई तरीका है?
- 10. क्या एक डीएलएल संस्करण का उपयोग करने के लिए मजबूर करने का कोई तरीका है?
- 11. क्या यूनिक्स में किसी प्रोग्राम में फ़ाइल के बजाय stdin/out की आपूर्ति करने का कोई तरीका है?
- 12. क्या कोई कथन की स्थिति का उपयोग करने के लिए कोई तरीका है?
- 13. स्ट्रिंग की पिक्सेल लंबाई की गणना करने का कोई तरीका?
- 14. क्या php में फ़ाइल हैंडल के रूप में स्ट्रिंग तक पहुंचने का कोई तरीका है?
- 15. क्या स्ट्रिंग को छोटा करने का कोई और तरीका है?
- 16. क्या मुझे TFilename की बजाय स्ट्रिंग का उपयोग करना चाहिए?
- 17. क्या आर में स्वतंत्र रूप से मैट्रिक्स के कॉलम को सॉर्ट करने का कोई तरीका है?
- 18. क्या जीत एपीआई का उपयोग कर HRESULT मूल्य की स्ट्रिंग प्रस्तुति प्राप्त करने का कोई तरीका है?
- 19. फ़ाइल क्रैश से पढ़ने के दौरान बफर का विस्तार करने के लिए रीयलोक का उपयोग करना
- 20. क्या आर में चर के लिए खोज करने का कोई तेज़ तरीका है?
- 21. क्या मेरे डब्ल्यूपीएफ ऐप में ओडीटीटीएफ फ़ॉन्ट फ़ाइल का उपयोग करने का कोई तरीका है?
- 22. क्या वैरिएडिक मैक्रो तर्कों पर सी ++ प्रीप्रोसेसर स्ट्रिंग का उपयोग करने का कोई तरीका है?
- 23. क्या टीएफएस में आंशिक चेकइन करने का कोई तरीका है?
- 24. क्या नियमित अभिव्यक्तियों के लिए जावास्क्रिप्ट में अप्रासंगिक मिलान का उपयोग करने का कोई तरीका है?
- 25. क्या ट्रूक्रिप्ट डिस्क से स्मृति में प्रोग्राम को प्रोग्राम रूप से पढ़ने का कोई तरीका है?
- 26. read.csv बड़ी संख्या में कॉलम
- 27. read.csv
- 28. क्या पूर्ण मॉडल के लिए @ Html.HiddenFor का उपयोग करने का कोई तरीका है?
- 29. क्या एमएस अजाक्स में उपयोग के लिए जावास्क्रिप्ट स्ट्रिंग में .NET स्ट्रिंग को एन्कोड करने का कोई मानक तरीका है?
- 30. read.csv row.names
आप के बजाय rJava पैकेज का उपयोग कर सकते हैं? –
शायद आप allowEscapes (read.table में) के साथ चारों ओर झुका सकते हैं। बस सुनिश्चित करें कि जावा आउटपुट लाइनों को तोड़ने के लिए \ n का उपयोग करता है। –
@ जोशुआ मैं अपने जावा प्रोग्राम से बात करने के लिए आरजेवा का उपयोग कर रहा हूं। मुझे लगता है कि आर –