मैं प्रोग्रामेटिक रूप से डेटासेट का एक गुच्छा ला रहा हूं, उनमें से कई मूर्खतापूर्ण नाम हैं जो संख्याओं से शुरू होते हैं और उनमें विशेष माइनस संकेत जैसे विशेष वर्ण होते हैं। चूंकि कोई भी डेटासेट विशेष रूप से बड़ा नहीं होता है, और मैं चाहता हूं कि लाभ आर डेटा प्रकारों के बारे में अपना सर्वश्रेष्ठ अनुमान लगाए, मैं इन तालिकाओं को SQLite में डंप करने के लिए dplyr का उपयोग कर रहा हूं।ब्रैकेट-बच निकले हुए टेबल नाम dplyr
मैं भयानक तालिका नामों से बचने के लिए स्क्वायर ब्रैकेट का उपयोग कर रहा हूं, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="[14m3-n4m3]")
यह त्रुटि संदेश में परिणाम है: उदाहरण के लिए:
Error in sqliteSendQuery(conn, statement, bind.data) : error in statement: no such table: 14m3-n4m3
यह काम करता है अगर मैं एक समझदार नाम चुनें। हालांकि, कई कारणों से, मैं वास्तव में बोझिल नाम रखना चाहता हूं। मैं भी SQLite से सीधे इस तरह के एक बुरी तरह से नाम तालिका बनाने के लिए कर रहा हूँ:
sqlite> create table [14m3-n4m3](foo,bar,baz);
sqlite> .tables
14m3-n4m3
भी गहरा चीजों में खुर के बिना, इस dplyr तरह लग रहा है किसी तरह से है कि मैं समझ नहीं में वर्ग कोष्ठक से निपटने है। मेरा संदेह यह है कि यह एक बग है, लेकिन मैं यह सुनिश्चित करने के लिए पहले यहां जांचना चाहता था कि मुझे कुछ याद नहीं आया।
संपादित करें: मैं उस मामले का उल्लेख करना भूल गया जहां मैं सिर्फ janky नाम को सीधे dplyr पास करता हूं। निम्नानुसार त्रुटियां:
library(dplyr)
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="14M3-N4M3")
Error in sqliteSendQuery(conn, statement, bind.data) :
error in statement: unrecognized token: "14M3"
यह सिर्फ एक अनुमान है, लेकिन यह आर के नामकरण सम्मेलनों के कारण हो सकता है। मुझे मिला एक संभावित कामकाज 'name = gsub ("[।]", "", Make.names ("[14m3-n4m3]") का उपयोग करना है। यदि आपने ऐसा किया है तो आप अभी भी अपने मूल नाम 'copy_to() 'में पास कर सकते हैं, हालांकि वे डेटा में थोड़ा अलग होंगे। यकीन नहीं है कि अगर यह मदद करता है लेकिन यह मेरे दो सेंट है।बहुत अच्छा सवाल है। –
यह कार्यान्वित करने की सड़क से शुरू होने से बेहतर कामकाज है। धीरे-धीरे इस विचार में बात कर रहे हैं कि अच्छे नाम + अन्य परेशानी> बुरे नाम। – Peter
मैं @RichardScriven से सहमत हूं - अपने आप को रोल करने की कोशिश करने के बजाय मौजूदा उपकरणों के नामों को संशोधित करने के लिए बेहतर! –