首页 > 解决方案 > 多重逻辑在 SpatialPolygonsDataFrame 中的哪一行

问题描述

我有一个 SpatialPolygonsDataFrame,其中有 3 个岛。在这些岛屿上,有命名的位置,但岛屿之间的名称并不是唯一的。我找到了一种方法来确定在各个岛之间复制了哪些名称,但我无法返回它们对应的行。理想情况下,我会找到一种访问这些行的方法,以便我可以修改位置名称以创建在岛屿之间唯一的名称。使用来自 sp 的 Meuse 数据集我想出了这个

library(sp)
data("meuse")
coordinates(meuse) <- ~ x + y
str(meuse)
a <- meuse[meuse$lime == "0" && meuse$landuse == "Ah",]
dim(a)
subset(meuse, lime == "1")

的返回a值为 0,但是当您查看最后一个子集行时,显然有符合该条件的行。关于我在这里缺少什么或我应该做什么的任何建议?

标签: rsp

解决方案


问题&&出在

a <- meuse[meuse$lime == "0" && meuse$landuse == "Ah",]

正如文件所说,

& 和 && 表示逻辑 AND 和 | 和 || 表示逻辑或。较短的形式执行元素比较的方式与算术运算符大致相同。较长的形式从左到右评估,仅检查每个向量的第一个元素。

例如,

c(TRUE, TRUE) && c(FALSE, TRUE)
# [1] FALSE
c(TRUE, TRUE) & c(FALSE, TRUE)
# [1] FALSE  TRUE

所以,相反,你想要

a <- meuse[meuse$lime == "0" & meuse$landuse == "Ah",]
dim(a)
# [1] 31 12

推荐阅读