You should use paste0
instead of paste
which is producing wrong results or paste(..., collapse='')
which is slightly less efficient (see ?paste0
or docs here).
Also you should consider preparing your SQL statement in separated variable. In such way you can always easily check what SQL is being produced.
I would use this (and I am using this all the time):
x <- "Mean"
sql <- paste0("select * from name where statistic='", x, "'")
# print(sql)
query1 <- dbGetQuery(con, sql)
In case I have SQL inside a function I always add debug
parameter so I can see what SQL is used:
function get_statistic(x=NA, debug=FALSE) {
sql <- paste0("select * from name where statistic='", x, "'")
if(debug) print(sql)
query1 <- dbGetQuery(con, sql)
query1
}
Then I can simply use get_statistic('Mean', debug=TRUE)
and I will see immediately if generated SQL is really what I expected.