如何使用r循环在传单贴图中添加多个多边形?

如何使用r循环在传单贴图中添加多个多边形?,r,maps,leaflet,r-leaflet,R,Maps,Leaflet,R Leaflet,根据许多国家代码列表,我正在尝试向传单世界地图添加多个多边形。我试着用R循环来添加多边形。下面是我从列表1手动添加多边形的代码: library(sp) library(raster) library(leaflet) library(maps) library(tidyverse) countries_1 <- c('PAK','TUR','BGR') adm1 <- getData('GADM', country='PAK', level=0) adm2 <- getD

根据许多国家代码列表,我正在尝试向传单世界地图添加多个多边形。我试着用R循环来添加多边形。下面是我从列表1手动添加多边形的代码:

library(sp)
library(raster)
library(leaflet)
library(maps)
library(tidyverse)

countries_1 <- c('PAK','TUR','BGR')

adm1 <- getData('GADM', country='PAK', level=0)
adm2 <- getData('GADM', country= 'TUR', level=0)
adm3 <- getData('GADM', country= 'BGR', level=0)


leaflet() %>% 
  addTiles() %>% 
  addPolygons(data=adm1, weight = 3, fillColor = 'purple', color = 'purple') %>%
  addPolygons(data=adm2, weight = 3, fillColor = 'purple', color = 'purple') %>%
  addPolygons(data=adm3, weight = 3, fillColor = 'purple', color = 'purple')

下面是一个使用软件包sfmapview的解决方案。请注意,目前只有使用mapview的开发版本才能实现这一点(请参见注释掉的
devtools::install\u github()

#devtools::install_github(“r-spatial/mapview@develop")
图书馆(sf)
图书馆(地图视图)
图书馆(光栅)
国家/地区\u 1%addTiles()
用于(数据列表中的i){
m=mapview::addFeatures(地图=m,
数据=i,
重量=3,
fillColor='紫色',
颜色=‘紫色’)
}
M

请注意,
addFeatures
与类型无关,因此点、线和/或多边形的任何组合都可以在这里使用。

这里有一个使用软件包sfmapview的解决方案。请注意,目前只能使用mapview的开发版本(请参阅注释掉的
devtools::install\u github()

#devtools::install_github(“r-spatial/mapview@develop")
图书馆(sf)
图书馆(地图视图)
图书馆(光栅)
国家/地区\u 1%addTiles()
用于(数据列表中的i){
m=mapview::addFeatures(地图=m,
数据=i,
重量=3,
fillColor='紫色',
颜色=‘紫色’)
}
M

请注意,
addFeatures
与类型无关,因此任何点、线和/或多边形的组合都可以在这里使用。

您不能将数据合并并将国家映射到一个变量吗?@RomanLuštrik请阅读注释。如果您将它们合并到一个变量中,它将只绘制列表中的第一个元素。看起来您正在添加一个基本地图当你通过循环时,你能在一个循环中创建
countries
粘贴的多边形串,然后用管道将其输送到
传单%>%addTiles%%>%
的末尾吗?你可以在循环中的每个迭代结束时用管道命令进行粘贴……你不能将数据合并并将country映射到一个变量吗?@RomanLuštrik请阅读注释。如果您将它们合并到一个变量中,它将只绘制列表中的第一个元素。看起来您每次通过循环时都在添加一个底图,您是否可以改为在一个循环中创建
国家
粘贴的多边形字符串,然后将其输送到
传单%>%addTiles%%
.Y的末尾你可以在每次迭代结束时将pipe命令粘贴到循环中…非常有用,谢谢!尽管我使用了旧方法应用了我的循环..非常有用,谢谢!尽管我使用了旧方法应用了我的循环。。
 countries_n <- ('ctry1','ctry2','ctry3',...'ctryn') 

 for (i in country_n) {

   countries <-  basemap %>% addPolygons(data=getData('GADM',country = i, level = 0),
  weight = 3, fillColor = 'purple', color = 'purple')

  }
addPolygons(data=c('PAK','TUR'), weight = 3, fillColor = 'purple', color = 'purple')
# devtools::install_github("r-spatial/mapview@develop")
library(sf)
library(mapview)
library(raster)

countries_1 <- c('PAK','TUR','BGR')

dat_list = lapply(countries_1, function(i) {
  st_as_sf(getData("GADM", country = i, level = 0))
})

m = leaflet() %>% addTiles()

for (i in dat_list) {
  m = mapview::addFeatures(map = m, 
                           data = i, 
                           weight = 3, 
                           fillColor = 'purple', 
                           color = 'purple')
}

m