如何在R中的for循环上查询

时间:2019-06-10 18:32:51

标签: mysql sql r

我有一个SQL数据库,该数据库有两列,一列包含人员ID,一列包含其信息。我有一个要从sql数据库查询的患者ID的数据框,我想使用一个for循环来查询它们,并且我希望将从for循环中获取的数据传输到一个表中,但是不成功。

我尝试了for循环的不同变体,但是它们都导致字符串向量出错,或者它们仅将最新信息放入表中,而忽略了之前任何ID的其他信息。

std::byte&

然后我收到此错误:

  

result_create(conn @ ptr,statement)中的错误:期望一个   字符串值:[type = character;程度上= 90907]。

预期结果应该是一个表格,其中包含我的数据ID和我在数据框中拥有的选定人员ID的相应信息。

1 个答案:

答案 0 :(得分:1)

请考虑使用DBI的sqlInterpolate安全有效地将参数绑定到查询中,并避免连接或标点的任何需要:

# PREPARED STATEMENT (NO DATA)
sql <- "SELECT * FROM kv WHERE Person = ?pid"

for (i in CancerMet2){ 
  query <- sqlInterpolate(conn, sql, pid = i)
  info <- dbGetQuery(conn, query)

  print(info)
}

要将结果保存在数据帧的命名列表中:

df_list <- setNames(lapply(CancerMet2, function(i) {
                             query <- sqlInterpolate(conn, sql, pid = i))
                             dbGetQuery(conn, query) 
                           }), 
                    paste0("Person_", CancerMet2))

df_list$Person_1
df_list$Person_2
df_list$Person_3
...