我想通过多年的森林砍伐来划分多边形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)
但它给出了相同的错误消息。我已经看到了一些示例,例如here,here和here,但我需要查看字符串的开头是否匹配,而不是数字运算符,例如&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”是“岁月”的葡萄牙语。