1つのオプションは、ループ内のSQL文字列を操作することです。文字列リテラルがある瞬間、'df[2]'
はR以外の文字として解釈されません。あなたのQのdf
は明らかにデータフレームではないので(文字ベクトルです!)、私の答えにはあいまいさがあります。このような何かがあなたが望むことをするでしょう。
ストア数値ベクトルで出力:
require(RMySQL)
df <- c('a','b','c')
out <- numeric(length(df))
names(out) <- df
は、今、私たちはdf
の要素をループは、クエリを3回実行することができます。ループを2つの方法で設定できます。i)df
とout
の要素を参照するために使用する番号としてi
、またはii)df
の各要素としてi
を順番に使用する番号(つまり、b
、...)。 )。私は以下の両方のバージョンを表示します。
## Version i
for(i in seq_along(df)) {
SQL <- paste("SELECT max(ID) FROM table WHERE columna='", df[i], "';", sep = "")
out[i] <- dbGetQuery(con, SQL)
dbDisconnect(con)
}
OR:あなたは個人的な好みに依存します使用
## Version ii
for(i in df) {
SQL <- paste("SELECT max(ID) FROM table WHERE columna='", i, "';", sep = "")
out[i] <- dbGetQuery(con, SQL)
dbDisconnect(con)
}
。 2番目のバージョンでは、out
のデータと同じ名前の出力ベクトルout
を設定する必要があります。
実際のSQLクエリが投稿したものと似ているとすれば、GROUP BY
句を使用して単一のSQL文でこれを実行して、計算する前にデータをグループ化することはできませんか?max(ID)
?このようなデータベースで単純なことを行うことは、はるかに迅速になるでしょう。残念ながら、私は遊ぶためにMySQLインスタンスを持っておらず、私のSQL-fuは現在弱いですから、この例を挙げることはできません。
[WHEREフィールドのユーザー指定変数を持つRSQLiteクエリ]の複製(http://stackoverflow.com/q/3449666/271616) –
ジョシュア、それを指摘してくれてありがとう。それはまた素晴らしい答えです。私はRMySQLソリューションを探していました。 – analyticsPierce
RMySQLを使用しているかRSQLliteを使用しているかにかかわらず、ソリューションは同じです。(「A」、「B」、「C」)のテーブルからcolumna columna、 'MAX(ID)を選択します: –