Это предупреждение, а не ошибка.Предупреждение вызвано обратной несовместимостью в последних версиях RSQLite.Вы можете игнорировать его, так как он работает в любом случае.
Оператор sqldf, показанный в вопросе
- , создает пустую базу данных
- , загружает фрейм данных
diamonds
к таблице с тем же именем в этой базе данных - запускает инструкцию
create
, которая создает в таблице вторую таблицу tbl1
- ничего не возвращает (на самом деле фрейм данных строки 0 столбец 0 строка) поскольку оператор
create
не имеет значения - уничтожает базу данных
При использовании sqldf
вам не нужны create
операторы.Он автоматически создает таблицу в базе данных сервера для любого фрейма данных, на который ссылается ваш оператор sql, поэтому следующий оператор sqldf
sqldf("select * from diamonds")
- создаст пустую базу данных
- загрузить
diamonds
в нее - запустить оператор
select
- вернуть результат оператора
select
в виде фрейма данных - уничтожить базу данных
Вы можете использовать аргумент verbose=TRUE
, чтобы увидеть отдельные вызовы низкоуровневого RSQLite (или другой серверной базы данных, если вы укажете другой бэкэнд):
sqldf("select * from diamonds limit 3", verbose = TRUE)
:
sqldf: library(RSQLite)
sqldf: m <- dbDriver("SQLite")
sqldf: connection <- dbConnect(m, dbname = ":memory:")
sqldf: initExtension(connection)
sqldf: dbWriteTable(connection, 'diamonds', diamonds, row.names = FALSE)
sqldf: dbGetQuery(connection, 'select * from diamonds limit 3')
sqldf: dbDisconnect(connection)
carat cut color clarity depth table price x y z
1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
Предложите вам подробный обзор help("sqldf")
, а также информацию на домашней странице sqldf github