首页 > 解决方案 > 试图通过 for 循环创建具有数据框名称的新列?

问题描述

我有一个数据框列表,我想在每个数据框中创建一个新列,它是数据框的名称,我在另一个列表中也有。我不知道为什么,但它最终创建了一个新的数据框,它只包含我列表中的最后一个数据框。

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”的新数据框,其中包含我列表中最后一个数据框的内容以及我想要的新列。我怎样才能得到它,以便所有数据框都获得一个带有其名称的新列?

标签: rloopsdataframe

解决方案


试试这个:

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

推荐阅读