22

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)")

明らかに、これらはどれも機能しませんが、この種の機能を可能にする何かがあると考えています。

4

4 に答える 4

20

渡す予定の文字列を作成します。だから代わりに

example <- sqlQuery(myDB,"SELECT * FROM dbo.my_table_fn (x)")

行う

example <- sqlQuery(myDB, paste("SELECT * FROM dbo.my_table_fn (", 
                                x, ")", sep=""))

の値を埋めますx

于 2010-12-01T23:16:50.110 に答える
3

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)

別の R チャップへのサイドノートとハットチップ

最近、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 で使用する独自のカスタム関数を返信してくれました。チェックしてください!

于 2013-03-28T14:23:58.023 に答える
-2

これで試してください

x <- 1
example2 <- fn$sqlQuery(myDB,"SELECT * FROM dbo.some_random_table AS foo WHERE foo.ID = '$x'")
于 2010-12-23T05:03:24.010 に答える
-2

より多くの変数でこれを行います:

  aaa <- "
      SELECT   ColOne, ColTwo 

FROM    TheTable 

 WHERE  HpId =  AAAA            and

  VariableId = BBBB     and 

  convert (date,date )  < 'CCCC'
  "


--------------------------

  aaa <- gsub ("AAAA",  toString(111),aaa)

  aaa <- gsub ("BBBB",  toString(2222),aaa)

  aaa <- gsub ("CCCC",  toString (2016-01-01) ,aaa)
于 2016-02-08T21:06:03.453 に答える