Проходить по циклу данных и выполнять SQL-запрос - PullRequest
0 голосов
/ 14 мая 2018

У меня есть фрейм данных, который имеет 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 голосов
/ 15 мая 2018

С помощью функции Shinobi_Atobe я мог бы развить ее в то, что я хотел, как показано ниже:

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

Это выполняет запрос sql из каждой строки в кадре данных и сохраняет выходные данные в отдельных кадрах данных, названных как df1,df2 ...

0 голосов
/ 14 мая 2018

Ваш вопрос кажется немного неясным, но, предполагая, что у вас есть фрейм данных со столбцом с именем «sql_code», вы можете просто применить функцию к каждому элементу в этом столбце

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

, в результате вы получитесписок, который можно составить вместе с bind_cols() (если кадры данных имеют одинаковые измерения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...