循环遍历数据框并执行SQL查询

时间:2018-05-14 13:03:33

标签: r dplyr

我有一个数据框,每行有6行SQL查询。我想执行每个查询并将输出分配给数据帧。目前我有6行代码如下:

df6 <- tbl(conn,sql(df[6,])) 有没有办法可以使用dplyr mutate函数循环并在一个语句中分配相同的内容? 我在下面尝试过:

i <- 1:nrow(df)
df %>% mutate(paste0('df',i) <- tbl(conn,sql(df[i,])))

这会引发以下错误:

  

错误:列q1必须是1d原子向量或列表。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您的问题似乎有点不清楚,但假设您的数据框中有一个标题为'sql_code'的列,您只需将函数应用于该列中的每个元素

lapply(df$sql_code, function(x) tbl(conn, sql(x)))

您最终会得到一个可以与bind_cols()放在一起的列表(如果数据框的尺寸相同)

答案 1 :(得分:0)

在Shinobi_Atobe的功能帮助下,我可以将其发展成我想要的,如下所示:

list2env(setNames(lapply(df$sql_query,function(x) {tbl(conn, sql(x))}), paste0('df', 1:nrow(df))), envir=.GlobalEnv)

这将从数据框中的每一行执行sql查询,并将输出存储在名为df1,df2 ...

的各个数据帧中