0

我想将多边形形状文件(巴西亚马逊地区的森林砍伐)除以多年的森林砍伐。年份在字符串字段中,如“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)

但它给出了同样的错误信息。我见过一些例子,比如这里这里这里,但我需要查看字符串的开头是否匹配,而不是数字运算符,例如 <、> 或 ==。请问有什么帮助吗?

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

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

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

PS:“anos”是葡萄牙语中“年”的意思。

4

0 回答 0