如果前一个交互获得空数据帧,如何在循环中移动到下一个交互?

时间:2016-09-27 16:13:40

标签: r loops

我想从在线数据库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)

1 个答案:

答案 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)