R MCP оценка для нескольких точек, не использующих adehabitat mcp - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь оценить перекрытия mcps, созданных из буферизованных точек.У меня есть несколько животных, и я хотел бы знать, насколько mcps перекрываются.

Я не использую mcp от adehabitat, потому что у меня есть только небольшое количество очков для некоторых животных.Я могу сделать отдельные mcp и рассчитать перекрытие других животных в каждом конкретном случае, но я изо всех сил пытаюсь связать это в целом, чтобы я мог, например, рассчитать перекрытия mcp для нескольких животных.В конце концов, это будет частью функции, вычисляющей перекрытие домашнего диапазона для различного числа животных.У меня такое чувство, что я упускаю что-то простое с lapply.

Пример кода ниже:

#create dummy dataset
set.seed(1)
data.frame(X = rpois(n = 20,30), Y = rpois(20,10), ID = c(rep("A",3), rep("B",5), rep("C", 1), rep("D",1), rep("E", 10) ))->relocs

#add a buffer 
id <- factor(relocs$ID)
xy <- as.data.frame(coordinates(relocs[1:2]))
r <- split(xy, id) #now have a list of each "id" and its relocations

#with the following code I can extract the ids, make the buffers and calculate the mcps

i<-1
idr<-data.frame(ID = rep(names(r[i]),nrow(r[i][[1]][1:2])))
coordinates(idr)<-r[i][[1]][1:2]
buf<-gBuffer(idr, width = 5) #plot a buffer 
mcpr<-gConvexHull(buf) #creates the mcp

Я думаю, что сейчас я хочу сделать это применить ко всему моему списку, чтобы получить списокmcps для каждого идентификатора, затем я хочу наложение, сравнивая все возможные диады, чтобы вычислить перекрытие MCP.Но у меня возникают проблемы с этими последними битами.

Когда я пытаюсь выполнить lapply, я думаю, что я делаю что-то не так с тем, как я его форматирую (взято из функции adehabitat mcp)

res <- SpatialPolygons(lapply(1:length(r), function(i) {
idr<-data.frame(ID = rep(names(r[i]),nrow(r[i][[1]][1:2])))
coordinates(idr)<-r[i][[1]][1:2]
buf<-gBuffer(idr, width = 5) #plot a buffer 
mcpr<-gConvexHull(buf) #creates the mcp
return(mcpr)
}))

выдает мне сообщение об ошибке «нет слота имени» области »для этого объекта класса« SpatialPolygons »»

Я пытался ответить на этот вопрос здесь , но я не могу понять синтаксис правильно,Я думаю, потому что я не могу правильно составить список полигонов mcp.Любая помощь очень ценится!

...