我有一个数据框列表,我想在每个数据框中创建一个新列,该列是该数据框的名称,我也在另一个列表中也有。我不确定为什么,但是最终会创建一个仅由列表中的最后一个数据帧组成的新数据帧。
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”的新数据框,该数据框具有列表中最后一个数据框的内容以及所需的新列。我如何获得它,以便所有数据框都获得一个带有其名称的新列?
答案 0 :(得分:1)
尝试一下:
for (i in 1:length(dfs)){
dfs[[i]]$geo <- df_list[i]
}