У меня есть список mem.shapes
объектов класса SpatialPolygonsDataFrame
. Каждый элемент списка содержит слот mem.shapes[[i]]@data
, который представляет собой кадр данных, который включает в себя столбец mem.shapes[[i]]@data$SCINAME
.Ведомость, аналогичная которой() для списка объектов S4
Я хотел бы извлечь элементы mem.shapes
, которые имеют определенную строку символов в mem.shapes[[i]]@data$SCINAME[1]
. Следующий код дает то, что я хочу:
SCINAME <- vector(mode="character", length=length(mem.shapes))
for(i in 1:length(mem.shapes)){
SCINAME[i] <- as.character(mem.shapes[[i]]@data$SCINAME[1])
}
which(SCINAME=="Dendroica magnolia")
Но я предполагаю, что это уборщик способ сделать это - своего рода which
-как заявление, которое может «достичь внутри» @data
слот элементов списка, чтобы вернуться индексы i
, которые имеют mem.shapes[[i]]@data$SCINAME[1]=="Dendroica magnolia"
Извините, если об этом ответили ранее; Я не смог найти его, несмотря на поиск. Я был бы признателен за то, что мой вопрос стал более общим и более доступным для поиска, поскольку я предполагаю, что это должна быть достаточно распространенная проблема.