R 中的动态 SQL 查询 (WHERE)

maR*_*tin 6 sql postgresql r dynamic-sql

我正在尝试使用 R 和 postgres 包连接到我的数据库的一些动态 SQL 查询。

不幸的是,如果执行以下语句,我会得到一个空数据框:

    x <- "Mean"
query1 <- dbGetQuery(con, statement = paste(
  "SELECT *",
  "FROM name",
  "WHERE statistic = '",x,"'"))
Run Code Online (Sandbox Code Playgroud)

我相信最后一行有语法错误。我已经以各种可能的方式更改了逗号和引号,但似乎没有任何效果。有谁知道如何使用 R 变量通过动态 WHERE 语句构造此 SQL 查询?

bar*_*nus 2

尝试这个:

    require(stringi)
    stri_paste("SELECT * ",
      "FROM name ",
      "WHERE statistic = '",x,"'",collapse="")
    ## [1] "SELECT * FROM name WHERE statistic = 'Mean'"
Run Code Online (Sandbox Code Playgroud)

或使用连接运算符%+%

"SELECT * FROM name WHERE statistic ='" %+% x %+% "'"
## [1] "SELECT * FROM name WHERE statistic ='mean'"
Run Code Online (Sandbox Code Playgroud)