2015-11-29 12 views
5

पर कनवर्ट करें यह एक नोब सवाल है, लेकिन मैं इस पर पागल हो रहा हूं। मेरे पास एक चरित्र वेक्टर है जिसे bar.list नाम दिया गया है जिसे मैं एफ़टीपी सेवर से डाउनलोड करता हूं। वेक्टर इस तरह दिखता है:लंबी स्ट्रिंग को डेटा.फ्रेम

"\"\",\"times\",\"open\",\"high\",\"low\",\"close\",\"numEvents\",\"volume\"\r\n\"1\",2015-05-18 06:50:00,23.98,23.98,23.5,23.77,421,0\r\n\"2\",2015-05-18 07:50:00,23.77,23.9,23.34,23.6,720,0\r\n\"3\",2015-05-18 08:50:00,23.6,23.6,23.32,23.42,720,0\r\n\"4\",2015-05-18 09:50:00,23.44,23.91,23.43,23.66,720,0\r\n\"5\",2015-05-18 10:50:00,23.67,24.06,23.59,24.02,720,0\r\n\"6\",2015-05-18 11:50:00,24.02,24.04,23.32,23.33,720,0\r\n\"7\",2015-05-18 12:50:00,23.33,23.42,22.74,22.81,720,0\r\n\"8\",2015-05-18 13:50:00,22.79,22.92,22.49,22.69,720,0\r\n\"9\",2015-05-18 14:50:00,22.69,22.7,22.14,22.14,481,0\r\n\"10\",2015-05-19 06:50:00,21.09,21.49,20.82,21.47,421,0\r\n\"11\",2015-05-19 07:50:00,21.48,21.68,21.46,21.51,720,0\r\n\"12\",2015-05-19 08:50:00,21.51,21.93,21.45,21.92,720,0\r\n\"13\",2015-05-19 09:50:00,21.92,21.92,21.55,21.55,720,0\r\n\" 

मैं इस सदिश प्रयोग करने योग्य प्रारूप में परिवर्तित लेकिन

> read.table(bars.list, header = TRUE, sep = ",", quote = "", dec = ".") 
Error in file(file, "rt") : cannot open the connection 
In addition: Warning message: 
In file(file, "rt") : 
    cannot open file '"","times","open","high","low","close","numEvents","volume" 
"1",2015-05-18 06:50:00,23.98,23.98,23.5,23.77,421,0 
"2",2015-05-18 07:50:00,23.77,23.9,23.34,23.6,720,0 
"3",2015-05-18 08:50:00,23.6,23.6,23.32,23.42,720,0 
"4",2015-05-18 09:50:00,23.44,23.91,23.43,23.66,720,0 

यह मेरे लिए स्पष्ट नहीं है क्यों आर मुझसे कहता है कि कुछ कनेक्शन वस्तु के रूप में खोला नहीं जा सकता है की जरूरत पहले से ही समारोह के लिए एक तर्क के रूप में चिपकाया गया है। आउटपुट आर मुझे एक चेतावनी संकेत के साथ दिखाता है जो मुझे चाहिए ...

उत्तर

4

यहां दो विकल्प हैं। पहला व्यक्ति आपके वर्तमान कोड में एक फिक्स प्रदान करता है, और दूसरा एक आसान और अधिक कुशल विकल्प पर दिखता है।

विकल्प 1:read.table() में पहला तर्क file है। आप एक वेक्टर से फ़ाइल से नहीं पढ़ रहे हैं, इसलिए आपको के साथ text तर्क का उपयोग करने की आवश्यकता है।

इसके अलावा, हम gsub() पहले से सभी उद्धरण से छुटकारा मिल सकता है और उसके बाद का उपयोग read.csv() बजाय read.table()header = TRUE के बाद से और sep = "," चूक रहे हैं।

read.csv(text = gsub("\"", "", bars.list), row.names = 1) 
#     times open high low close numEvents volume 
# 1 2015-05-18 06:50:00 23.98 23.98 23.50 23.77  421  0 
# 2 2015-05-18 07:50:00 23.77 23.90 23.34 23.60  720  0 
# 3 2015-05-18 08:50:00 23.60 23.60 23.32 23.42  720  0 
# 4 2015-05-18 09:50:00 23.44 23.91 23.43 23.66  720  0 
# 5 2015-05-18 10:50:00 23.67 24.06 23.59 24.02  720  0 
# 6 2015-05-18 11:50:00 24.02 24.04 23.32 23.33  720  0 
# 7 2015-05-18 12:50:00 23.33 23.42 22.74 22.81  720  0 
# 8 2015-05-18 13:50:00 22.79 22.92 22.49 22.69  720  0 
# 9 2015-05-18 14:50:00 22.69 22.70 22.14 22.14  481  0 
# 10 2015-05-19 06:50:00 21.09 21.49 20.82 21.47  421  0 
# 11 2015-05-19 07:50:00 21.48 21.68 21.46 21.51  720  0 
# 12 2015-05-19 08:50:00 21.51 21.93 21.45 21.92  720  0 
# 13 2015-05-19 09:50:00 21.92 21.92 21.55 21.55  720  0 

मेरे लिए इस read.csv() में quote तर्क का उपयोग की तुलना में बेहतर काम किया।

विकल्प 2: data.table पैकेज सेfread() अच्छी तरह भी काम करता है। यह तेज़ है और कोड क्लीनर है। इसके साथ gsub() का उपयोग करने की आवश्यकता नहीं है। हम सीधे bars.list डाल सकते हैं और पहले कॉलम को छोड़ सकते हैं।

data.table::fread(bars.list, drop = 1) 

अब, आप अंतिम \" बोली के कारण इस विधि के साथ एक चेतावनी मिल जाएगा। आप या तो इसके साथ रह सकते हैं या उस अंतिम उद्धरण चिह्न को हटाकर चेतावनी-कम परिणाम प्राप्त कर सकते हैं।

data.table::fread(sub("\"$", "", bars.list), drop = 1) 

डाटा:

bars.list <- "\"\",\"times\",\"open\",\"high\",\"low\",\"close\",\"numEvents\",\"volume\"\r\n\"1\",2015-05-18 06:50:00,23.98,23.98,23.5,23.77,421,0\r\n\"2\",2015-05-18 07:50:00,23.77,23.9,23.34,23.6,720,0\r\n\"3\",2015-05-18 08:50:00,23.6,23.6,23.32,23.42,720,0\r\n\"4\",2015-05-18 09:50:00,23.44,23.91,23.43,23.66,720,0\r\n\"5\",2015-05-18 10:50:00,23.67,24.06,23.59,24.02,720,0\r\n\"6\",2015-05-18 11:50:00,24.02,24.04,23.32,23.33,720,0\r\n\"7\",2015-05-18 12:50:00,23.33,23.42,22.74,22.81,720,0\r\n\"8\",2015-05-18 13:50:00,22.79,22.92,22.49,22.69,720,0\r\n\"9\",2015-05-18 14:50:00,22.69,22.7,22.14,22.14,481,0\r\n\"10\",2015-05-19 06:50:00,21.09,21.49,20.82,21.47,421,0\r\n\"11\",2015-05-19 07:50:00,21.48,21.68,21.46,21.51,720,0\r\n\"12\",2015-05-19 08:50:00,21.51,21.93,21.45,21.92,720,0\r\n\"13\",2015-05-19 09:50:00,21.92,21.92,21.55,21.55,720,0\r\n\"" 
संबंधित मुद्दे