如何通过匹配部分字符串在R中对空间多边形进行子集化?

时间:2013-08-01 20:03:36

标签: r geospatial string-matching

我想通过多年的森林砍伐来划分多边形shapefile(在巴西亚马逊地区砍伐森林)。这些年份位于字符串字段中,例如“d2010_1”,“d2010_2”,“d2011_1”等。我想在5年内划分它。我尝试了以下方法:

d00a04 <- prodes[grepl("d2000",prodes@data$CLASS_NAME) ||
            grepl("d2001",prodes@data$CLASS_NAME) ||
            grepl("d2002",prodes@data$CLASS_NAME) ||
            grepl("d2003",prodes@data$CLASS_NAME) ||
            grepl("d2004",prodes@data$CLASS_NAME),]

但是它出现了以下错误:

Error in if (is.numeric(i) && i < 0) { : 
  missing value where TRUE/FALSE needed

我也尝试过:

anos00a04 = c("d2000","d2001","d2002","d2003","d2004")
d00a04 <- subset(prodes,prodes@data$CLASS_NAME %in% anos00a04)

但它给出了相同的错误消息。我已经看到了一些示例,例如hereherehere,但我需要查看字符串的开头是否匹配,而不是数字运算符,例如&lt;,&gt;或==。有什么帮助吗?

编辑:我想出了办法,但发生了一些奇怪的事情。我做了以下事情:

anos <- sort(unique(prodes@data$CLASS_NAME))
anos00a04 <- anos[2:20]

第一个命令给了我原始shapefile的所有49个级别。第二个只返回2000年到2004年之间的那些。到目前为止一直很好。但当我要求查看第二个变量时,它显示了19个itens(d2000_2 d2000_3 d2001_0 d2001_3 d2001_4 ......),但在它下面显示:“49个级别:d1997_0 d2000_2 d2000_3 ...”包括那些应该留在外面的(并且不在列表中)。发生了什么事?

PS:“anos”是“岁月”的葡萄牙语。

0 个答案:

没有答案