我知道可以使用:
将多个estUD对象组合成一个class- estudm对象:tot <- list(estUD1=estUD1, estUD2=estUD2, estUD3=estUD3)
class(tot) <- "estUDm"
但是,是否可以合并两个或多个estUDm对象为单个estUDm对象?我试过用同样的原则;例如tot <- list(estUDm1=estUDm1, estUDm2=estUDm2, estUDm3=estUDm3)
class(tot) <- "estUDm"
但是,这会导致以下错误:
> tot
********** Utilization distribution of several Animals ************
Error in print.estUDm(x) :
trying to get slot "vol" from an object (class "estUDm") that is not an S4 object
在我的例子中,我的目标是使用相同的网格运行两个KDE分析,但平滑度不同(因此我最终使用两个estUDm对象),然后使用kerneloverlaphr()将它们组合起来计算多边形的重叠百分比。
我没有成功地尝试找到/创建可以一次计算多个多边形重叠的替代代码,因此我依赖于kerneloverlaphr()。
这有点晚了,但是因为class-estUDm只是class- estud的一个列表,所以我相信您可以取消列表来获得class- estud,将它们连接到一个新的列表中,然后指定estUDm类。下面的例子:
library(adehabitatHR)
library(sp)
#example data
data(puechabonsp)
dat <- puechabonsp$relocs
dat$Name <- as.character(dat$Name)
#split into two datasets
d1 <- dat[dat$Name == 'Brock' | dat$Name == 'Jean', ]
d2 <- dat[dat$Name != 'Brock' & dat$Name != 'Jean', ]
#get two lists of class estUDm
estUDm1 <- kernelUD(d1[ ,'Name'])
estUDm2 <- kernelUD(d2[ ,'Name'])
#unlist for class estuD
estUDm1 <- unlist(estUDm1)
estUDm2 <- unlist(estUDm2)
#concatenate to a new list
tot <- c(estUDm1, estUDm2)
#assign class estuDm
class(tot) <- "estUDm"
tot