R内で定義された変数をRODBCパッケージ内のsqlQuery関数に渡す方法はありますか?
具体的には、そのような変数をスカラー/テーブル値関数、ストアドプロシージャ、またはSELECTステートメントのWHERE句のいずれかに渡す必要があります。
たとえば、次のようにします。
x <- 1 ## user-defined
次に、
example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")
または...
example2 <- sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = x")
または...
example3 <- sqlQuery(myDB,"EXEC dbo.my_stored_proc (x)")
もちろん、これらはどれも機能しませんが、この種の機能を可能にする何かがあると思います。
渡す予定の文字列を作成します。だから代わりに
example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")
行う
example <- sqlQuery(myDB, paste("SELECT * FROM dbo.my_table_fn (",
x, ")", sep=""))
x
の値を入力します。
Sprintfを使用する場合、変数置換を使用してクエリ文字列を非常に簡単に作成できます。さらに使いやすくするために、そのクエリ文字列を事前に解析すると(私はstringrを使用しています)、コード内の複数の行に書き込むことができます。
例えば.
q1 <- sprintf("
SELECT basketid, count(%s)
FROM %s
GROUP BY basketid
"
,item_barcode
,dbo.sales
)
q1 <- str_replace_all(str_replace_all(q1,"\n",""),"\\s+"," ")
df <- sqlQuery(shopping_database, q1)
最近、Pythonのstring.format()関数のようなものを使用して、変数の置換をさらに簡単にしたいと思いました。これにより、文字列内の変数を再利用および並べ替えることができます。
例えば.
$: w = "He{0}{0}{1} W{1}r{0}d".format("l","o")
$: print(w)
"Hello World"
しかし、この関数はRには存在しないようですので、Twitterで質問したところ、非常に役立つ章 @ kevin_ushey が自分の カスタム関数 を使用して返信しました。 Rで。チェックしてください!