将多个值作为参数传递给SQLDF

时间:2018-03-29 12:16:17

标签: r

我有一个数据集如下:

Class Age
A     20
A     27 
B     30
C     31

我将类存储在变量即cl=c("A","B")

现在只想要这个类的所有记录:

Out=sqldf(paste0("SELECT * from Data where Class in '","(","'",g,"'",")")

但我只为最后一节获得了记录,即B

如何获取Class变量中所有cl的记录?

1 个答案:

答案 0 :(得分:0)

1)请参阅?fn(在由sqldf自动提取的gsubfn中)和sqldf github主页,以便使用fn$执行字符串插值。< / p>

library(sqldf)

cl <- c("A", "B")
fn$sqldf("SELECT * from Data where Class in (`toString(shQuote(cl))`) ")

2)或查看生成的SQL,首先将其存储在变量中。

sql <- fn$c("SELECT * from Data where Class in (`toString(shQuote(cl))`) ")
sqldf(sql)

3)或将要替换的部分放在变量CL中,然后使用fn&#39; s $表示法来引用变量:

CL <- toString(shQuote(cl))
sql <- fn$c("SELECT * from Data where Class in ($CL) ")
sqldf(sql)

注意

Lines <- "
Class Age 
A 20 
A 27 
B 30 
C 31"
Data <- read.table(text = Lines, header = TRUE)