rsqlite query where field [duplicate]のユーザー指定変数を使用してクエリ
質問
この質問にはすでに答えがあります:
- rの動的な「文字列」 2つの回答
私はを使用しています RSQLite
Rのライブラリは、RAMには大きすぎるデータセットを管理します。回帰ごとに、データベースをクエリして、一度に会計年度を取得します。今、私は財政年をハードコーディングしています:
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==2008")
会計年度(上記の2008年)を作って、変更を少し簡単にしたい(そして愚かな)。変数をSQLクエリ文字列に渡すことができる方法はありますか?使いたい:
fiscal.year <- 2008
data.annual <- dbGetQuery(db, "SELECT * FROM annual WHERE fyear==fiscal.year")
解決
sqliteはクエリのために渡された文字列のみを見るので、あなたがすることは
sqlcmd <- paste("SELECT * FROM annual WHERE fiscal=", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)
良いことは、これを通常の方法で使用できることです。ラムの制限があることを忘れて、概念的にできる
years <- seq(2000,2010)
data <- lapply(years, function(y) {
dbGetQuery(db, paste("SELECT * FROM annual WHERE fiscal=", y, sep="")
}
そして今、データはすべての年間データセットを含むリストです。または、データを保持し、回帰を実行し、概要オブジェクトのみを保存することもできます。
他のヒント
ダークの答えはスポットです。私がやろうとしていることの1つは、簡単なテストのためにフォーマットを変更することです。 SQLテキストをカットしてSQLエディターに何度も貼り付けなければならないようです。だから私は次のようにフォーマットします:
sqlcmd <- paste("
SELECT *
FROM annual
WHERE fiscal=
", fiscal.year, sep="")
data.annual <- dbGetQuery(db, sqlcmd)
これにより、DBクエリ環境でのテストのためにSQLビットのイン/アウトを簡単に貼り付けて貼り付けます。短いクエリについては大したことはありませんが、より長いSQL文字列で面倒にすることができます。
所属していません StackOverflow