我有一个dataframe,它在每一行中都有6行SQL查询。我希望执行每个查询,并将输出分配给dataframe。目前,我有6行代码如下:
df6 <- tbl(conn,sql(df[6,])),我是否可以使用dplyr变异函数在一个语句中循环并分配相同的语句?我尝试了如下:
i <- 1:nrow(df)
df %>% mutate(paste0('df',i) <- tbl(conn,sql(df[i,])))这会引发以下错误:
错误:列
q1必须是一维原子向量或列表。
任何帮助都是非常感谢的。
发布于 2018-05-14 14:22:51
您的问题似乎有点不清楚,但假设您有一个名为“sql_code”的列的dataframe,您可以只对该列中的每个元素应用一个函数。
lapply(df$sql_code, function(x) tbl(conn, sql(x)))最后,您将得到一个可以与bind_cols()放在一起的列表(如果数据帧具有相同的维度)。
发布于 2018-05-15 08:51:10
在Shinobi_Atobe函数的帮助下,我可以将它发展成我想要的,如下所示:
list2env(setNames(lapply(df$sql_query,function(x) {tbl(conn, sql(x))}), paste0('df', 1:nrow(df))), envir=.GlobalEnv)它从dataframe的每一行执行sql查询,并将输出存储在名为df1、df2.
https://stackoverflow.com/questions/50331038
复制相似问题