r - 试图通过 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”的新数据框,其中包含我列表中最后一个数据框的内容以及我想要的新列。我怎样才能得到它,以便所有数据框都获得一个带有其名称的新列?
解决方案
试试这个:
for (i in 1:length(dfs)){
dfs[[i]]$geo <- df_list[i]
}
推荐阅读
- xml - 将 XML 转换为 PSCustomObject
- java - 如何找到子集中元素的总和
- java - 嵌套对象解析器的字符串
- javascript - 自执行函数中 this 的范围
- javascript - Firestore:根据地理位置和多对多关系检索数组中不存在的文档
- r - Gpu processing R(如何使用 Gpu 处理在数据集的子集上运行函数)
- javascript - 如何使用户名也出现在另一个用户处?
- openapi - 如何使用两个模式对象定义响应
- php - 如何使用 nginx 反向代理 ssh 到我的远程 docker 容器
- java - 如何在Java中检查100位整数是否为素数?