的肯定是預先構建工具,SQL與R查詢類似這樣的任務(因爲你使用SQLite,我一定要看看sqldf),但在我的經驗,我剛寫出來很多用於構建查詢的小幫助包裝函數。
例如,在你的情況下,你的問題不是真正的R部分,而是你想將keys
中的所有值放入一個查詢中。所以,你想要一個查詢,看起來更像是:
SELECT content FROM aacontent WHERE Id IN (val1,val2,...)
,然後訣竅是R中使用paste
打造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的建議可能更值得關注。
我可能會將您的SQL查詢從'Id ='更改爲'Id IN(...)'。 「鍵」字符,數字,......中的值? – joran 2012-01-28 00:20:05
他們是字符。您是否建議在IN之後將整個矢量放入括號中?那會保留正確的順序嗎? – 2012-01-28 01:07:00
可能不是(它將取決於按鍵的順序)。我會在查詢中選擇'content'和'Id',然後對結果進行排序,無論是在SQLite中,還是在R中的事實之後進行排序。 – joran 2012-01-28 01:10:05