O truque é usar
shQuote
e sprintf
mas existem maneiras inteligentes de fazer isso, tenho certeza. library(sqldf)
library(RPostgreSQL)
options(sqldf.RPostgreSQL.user = "****",
sqldf.RPostgreSQL.dbname = "****",
sqldf.RPostgreSQL.host = "localhost",
sqldf.RPostgreSQL.port = 5432)
myfunc <- function(name)
sqldf(sprintf("select * from retrieve_data(%s)", shQuote(name)))
myfunc('Bill')
## id name year_born nationality
## 1 A1 Bill 2001 American
## 2 A2 Bill 1991 American
## 3 A3 Bill 1995 American
Se você quiser evitar citar a string, então você pode usar
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = "tempdb")
myfunc2 <- function(name)
dbGetQuery(con, "select * from retrieve_data($1)", name)
myfunc2("Bill")
## id name year_born nationality
## 1 A1 Bill 2001 American
## 2 A2 Bill 1991 American
## 3 A3 Bill 1995 American