r - 如何使用具有多个结果的 for 循环
问题描述
我必须自动化这一系列功能:
for (i in c(15,17,20,24,25,26,27,28,29,45,50,52,55,60,62)) {
WBES_sf_angola_i <- subset(WBES_sf_angola, isic == i)
WBES_angola_i <- as_Spatial(WBES_sf_angola_i)
FDI_angola_i <- FDI_angola[FDI_angola$isic==i,]
dist_ao_i <- distm(WBES_angola_i,FDI_angola_i, fun = distGeo)/1000
rm(WBES_sf_angola_i,WBES_angola_i,FDI_angola_i)
}
因此,我希望每个 i 都有一个“dist_ao”。索引值可以在和数据集的 isic
列中找到。 WBES_sf_angola
FDI_angola
如何将索引嵌入到各种项目的名称中?
编辑:
我尝试了以下修改:
for (i in c(15,17,20,24,25,26,27,28,29,45,50,52,55,60,62)) {
WBES_sf_angola_i <- subset(WBES_sf_angola, isic == i)
WBES_angola_i <- as_Spatial(WBES_sf_angola_i)
FDI_angola_i <- FDI_angola[FDI_angola$isic==i,]
result_list <- list()
result_list[[paste0("dist_ao_", i)]] <- distm(WBES_angola_i,FDI_angola_i, fun = distGeo)/1000
rm(WBES_sf_angola_i,WBES_angola_i,FDI_angola_i)
}
并且输出只是一个包含 1 的列表dist_ao_62
。我在哪里避免覆盖?
解决方案
你可以这样接近它。所有结果dataframes
都将包含在 中list
,您可以dataframe
在此处从代码的最后一行将其转换为 a。注意:由于不可重现,我主要从循环内的问题中获取代码。
WBES_sf_angola_result <- list() # renamed this, as it seems you are using a dataset with the name WBES_sf_angola
WBES_angola <- list()
FDI_angola <- list()
dist_ao <- list()
for (i in c(15,17,20,24,25,26,27,28,29,45,50,52,55,60,62)) {
WBES_sf_angola[[paste0("i_", i)]] <- subset(WBES_sf_angola, isic == i)
WBES_angola[[paste0("i_", i)] <- as_Spatial(WBES_sf_angola_i)
FDI_angola[[paste0("i_", i)] <- FDI_angola[FDI_angola$isic==i,]
dist_ao[[paste0("i_", i)] <- distm(WBES_angola_i,FDI_angola_i, fun = distGeo)/1000
rm(WBES_sf_angola_i,WBES_angola_i,FDI_angola_i)
}
WBES_sf_angola_result <- do.call(rbind, WBES_sf_angola_result) # to get a dataframe
您的子集数据也可以通过列表索引访问。例如。
WBES_sf_angola_result[[i_15]] # for the first item.
推荐阅读
- python - 在值是另一个字典的字典中,如何更改第二个字典的特定值?
- python - 将 Google 大查询数据下载到 Jupyter 笔记本,但仅捕获 1000 行
- django - 我试图弄清楚 Django 的功能并遇到了这个递归错误
- git - 从谷歌云平台克隆一个 git repo
- postgresql - 带有 count(*) 查询的 Ecto union_all
- mongodb - 如何使用 PyMongo 在 MongoDB 中获取不同的名称和计数
- python - 在 pandas read_csv 中以毫秒为单位解析日期
- python - 使用 urlencode 转义句点
- java - Selenium 使用构建信息抛出 TimeoutException:版本:“未知”,修订:“未知”,时间:“未知”,然后使用 Burp 正确加载页面
- javascript - 在 JavaScript+Node.js 中如何等待上一个 post 请求完成?