Этот код
> A <- data.frame(col1 = c(1,2,3),col2 = c("red","blue","green"))
> color_num <- 2
> fn$sqldf("select * from A where col1 >= '$color_num'")
выдает ошибку
Ошибка в eval (parse (text = paste (..., sep = "")), env): object
«цвет» не найден
Но если вместо переменной color_num
дано имя без подчеркивания (скажем, colornum
), то выполнение fn$sqldf("select * from A where col1 >= '$colornum'")
даст ожидаемые результаты без ошибок.
Я полагаю, sqldf
заменяет подчеркивания на точки за сценой, заставляя его рассматривать компонент, предшествующий подчеркиванию, как таблицу, а часть, следующую за именем столбца. Этот ответ (и комментарии) на вопрос об именах столбцов в sqldf
указывает, что когда-то библиотека заменяла точки подчеркиванием, но больше не делает, но я не смог найти ничего о замене подчеркивания на точек.
Это проблема, поскольку соглашение об именах, которое я использую, интенсивно использует подчеркивания для имен переменных.
Есть ли способ получить имена переменных с подчеркиванием в них, работающих в sqldf
запросах?