Tôi đang tìm nạp một nhóm các tập dữ liệu theo chương trình, nhiều trong số chúng có tên ngớ ngẩn bắt đầu bằng số và có các ký tự đặc biệt như dấu trừ trong chúng. Vì không có bộ dữ liệu nào đặc biệt lớn và tôi muốn lợi ích R đưa ra dự đoán tốt nhất về các kiểu dữ liệu, tôi (ab) sử dụng dplyr để kết xuất các bảng này vào trong SQLite.Tên bảng khung thoát bằng dplyr
Tôi đang sử dụng dấu ngoặc vuông để thoát khỏi tên bảng khủng khiếp, nhưng điều này dường như không hoạt động. Ví dụ:
data(iris)
foo.db <- src_sqlite("foo.sqlite3", create = TRUE)
copy_to(foo.db, df=iris, name="[14m3-n4m3]")
Điều này dẫn đến các thông báo lỗi:
Error in sqliteSendQuery(conn, statement, bind.data) : error in statement: no such table: 14m3-n4m3
này hoạt động nếu tôi chọn một tên hợp lý. Tuy nhiên, vì nhiều lý do, tôi thực sự muốn giữ những cái tên cồng kềnh. Tôi cũng có thể tạo ra một bảng nặng tên như vậy trực tiếp từ sqlite:
sqlite> create table [14m3-n4m3](foo,bar,baz);
sqlite> .tables
14m3-n4m3
Nếu không nứt thành điều quá sâu, điều này có vẻ như dplyr là xử lý các dấu ngoặc vuông trong một cách nào đó mà tôi không thể tìm ra. Nghi ngờ của tôi là đây là một lỗi, nhưng tôi muốn kiểm tra ở đây đầu tiên để chắc chắn rằng tôi đã không bỏ lỡ một cái gì đó.
EDIT: Tôi quên đề cập đến trường hợp tôi chỉ chuyển tên janky trực tiếp tới dplyr. Lỗi này như sau:
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"
Đây chỉ là phỏng đoán, nhưng có thể là do quy ước đặt tên của R. Một cách giải quyết khác mà tôi tìm thấy là sử dụng 'name = gsub (" [.] "," ", Make.names (" [14m3-n4m3] "))'. Nếu bạn đã làm điều đó bạn vẫn có thể truyền tên ban đầu của bạn trong 'copy_to()', mặc dù chúng sẽ hơi khác trong dữ liệu. Không chắc chắn nếu điều đó giúp nhưng đó là hai xu của tôi.Câu hỏi rất hay. –
Đây là giải pháp tốt hơn so với những gì tôi đã bắt đầu xuống con đường thực hiện. Dần dần nói chuyện với chính mình vào ý tưởng rằng tên tốt + phức tạp khác> tên xấu. – Peter
Tôi đồng ý với @RichardScriven - tốt hơn để sửa đổi tên với các công cụ hiện có hơn để cố gắng cuộn của riêng bạn! –