尝试通过for循环创建具有数据框名称的新列吗?

时间:2018-08-24 16:53:07

标签: r loops dataframe

我有一个数据框列表,我想在每个数据框中创建一个新列,该列是该数据框的名称,我也在另一个列表中也有。我不确定为什么,但是最终会创建一个仅由列表中的最后一个数据帧组成的新数据帧。

schema <- "x"
table_prefix <- "results_"
geos <- district %>% filter(geo != "geo")

for (geo in geos){
  tables <- paste0(schema, ".", table_prefix, geo)
  queries <-   paste("SELECT * FROM", tables)
}


i = 1
df_list <- list()
for (x in queries){
  name <- substr(x, 40, nchar(x))
  df_list[i] <- name
  assign(name, dbGetQuery(con, x))
  i = i + 1
}

dfs <- lapply(df_list, get)

i = 1
for (x in dfs){
  x$geo <- df_list[i]
  i = i + 1
} 


full_df <- do.call(rbind, dfs)

这最终为我提供了一个名为“ x”的新数据框,该数据框具有列表中最后一个数据框的内容以及所需的新列。我如何获得它,以便所有数据框都获得一个带有其名称的新列?

1 个答案:

答案 0 :(得分:1)

尝试一下:

for (i in 1:length(dfs)){
  dfs[[i]]$geo <- df_list[i]
}