在" IN"中使用变量R

时间:2015-11-17 19:45:21

标签: r

我有一个包含20000个ID的变量x。我想编写一个像

这样的SQL查询
select * from tablename where ID in x;

我试图在R中实现它,我只能获取x变量中的ID值。以下是我的尝试,

dbSendQuery(mydb, "select * from tablename where ID in ('$x') ")

尝试此操作时我没有收到任何错误。但它返回0值。

接下来尝试使用

sprintf("select * from tablename where ID in %s",x)

但这会产生20000个单独的查询,这可能会导致数据库成本高昂。

有人可以建议我编写一个命令的方法,它会循环遍历x中的ID并在单个查询中保存到R中的Dataframe吗?

2 个答案:

答案 0 :(得分:2)

您需要在实际字符串中包含代码。以下是我使用gsub

的方法
x <- LETTERS[1:3]

sql <- "select * from tablename where ID in X_ID_CODES "

x_codes <- paste0("('", paste(x, collapse="','"), "')")

sql <- gsub("X_ID_CODES", x_codes, sql)

# see new output
cat(sql)
select * from tablename where ID in ('A','B','C')  


# then submit the query
#dbSendQuery(mydb, sql)

答案 1 :(得分:1)

粘贴它怎么样:

dbSendQuery(mydb, paste("select * from tablename where ID in (", paste(x, collapse = ","), ")"))