我想从在线数据库OBIS中提取一组多边形的所有物种出现记录。多边形的数量很大,可以同时获得所有多边形,所以我想用一个循环来实现它。我面临的问题是由于并非所有多边形都有记录,因此结果是空数据帧并且循环停止。我尝试使用control-flow" if"但是没有用。我可以通过循环获得我需要的东西吗? Here是我正在使用的shapefile的缩写版本。
library(robis)
library(maptools)
library(mregions)
library(plyr)
polygons <- readShapeSpatial("~/smaller.shp")
occurrence_list = list()
for (i in 1:length(polygons)){
wkt_polygons <- mr_as_wkt(polygons[i,])
occur <- occurrence(geometry=wkt_polygons)
if(is.null(occur) next
occur$i<-i
occurrence_list[[i]] <- occur
}
data <- dplyr::bind_rows(occurrence_list)
答案 0 :(得分:0)
我不确定所需的结果应该如何,但这可能会有效:
occurrence_list = list()
for (i in 1:length(polygons)){
wkt_polygons <- mr_as_wkt(polygons[i,])
occur <- occurrence(geometry=wkt_polygons)
if(nrow(occur) > 0) {
occur$i<-i
occurrence_list[[length(occurrence_list) + 1]] <- occur
}
}
data <- dplyr::bind_rows(occurrence_list)