Это, безусловно, готовые инструменты для таких запросов SQL от R (поскольку вы используете SQLite, я обязательно проверю sqldf ), но на своем опыте я просто заканчиваюдо написания множества маленьких вспомогательных функций-оболочек для построения запросов.
Например, в вашем случае ваша проблема на самом деле не в части R, а в том, что вы хотите свернуть все значения в keys
водин запросТаким образом, вы хотите запрос, который будет выглядеть примерно так:
SELECT content FROM aacontent WHERE Id IN (val1,val2,...)
, а затем трюк использует paste
в R для построения предложения IN
.Я просто использую простую функцию-обертку в dbGetQuery
, которая использует аргумент ...
и paste
для сшивания запросов из разных частей.Примерно так:
myQuery <- function(con,...){
arg <- list(...)
res <- dbGetQuery(con,paste(arg,collapse = ""))
res
}
Чтобы было легче соединить вещи при использовании предложений IN
:
myQuery(con,"SELECT content FROM aacontent WHERE Id IN (",
paste(keys,collapse = ","),"))
Обратите внимание, что это немного сложнее, если значения в keys
- это символы, с тех пор вам нужно проделать еще некоторую работу с paste
, чтобы получить одинарные кавычки вокруг каждого элемента, но это не так уж много работы.
Этот совет более уместен, если БД ввопрос довольно маленький;если вы имеете дело с большими данными, вероятно, стоит рассмотреть предложения Spacedman.