Какая строка в SpatialPolygonsDataFrame по нескольким логикам - PullRequest
0 голосов
/ 03 января 2019

У меня есть один SpatialPolygonsDataFrame, в котором у меня есть 3 острова. На этих островах есть названные местоположения, однако названия не уникальны между островами. Я нашел способ определить, какие имена реплицируются между различными островами, но я не могу вернуться к тому, какой строке они соответствуют. В идеале я бы нашел способ получить доступ к этим строкам, чтобы я мог изменить имя местоположения, чтобы создать уникальное имя между островами. Используя набор данных Meuse от sp я придумал этот

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, но когда вы смотрите на последнюю строку подмножества, ясно, что строки соответствуют этому условию. Любые предложения о том, что мне здесь не хватает или что мне следует делать вместо этого?

1 Ответ

0 голосов
/ 04 января 2019

Проблема && в

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

Как сказано в документации,

& и && указывают на логическое И и | и || указать логическое ИЛИ. более короткая форма выполняет поэлементное сравнение во многом так же, как арифметические операторы. Более длинная форма оценивается слева направо исследовать только первый элемент каждого вектора.

Например,

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
...