微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 adehabitatHR 包计算用于家庭范围分析的 KUD?

如何解决如何使用 adehabitatHR 包计算用于家庭范围分析的 KUD?

我正在尝试为我的企鹅跟踪数据计算 KUD 50% 和 95%,但遇到了错误。我的目标是计算家庭范围密度,然后将数据导出为多边形。

library(adehabitatHR)  
library(sp)
library(readxl)
library(rgdal)

HRtracks<- as.data.frame(read_excel("allinterpolatedtracks.xlsx")) 

# assign the correct columns as coordinates
coordinates(HRtracks)<-c("x","y")   
proj4string(HRtracks)<- CRS("+init=epsg:3857")

#convert the coordinates to utm format
tracks.utm<-spTransform(HRtracks,CRS("+proj=utm +zone=60 +datum=wgs84"))

运行这部分脚本后出现错误,tracks.utm[,X] 表示数据排序的列,这是按单独的tripID,因此它应该为每个单独的轨道创建一个范围。

colkud<-kernelUD(tracks.utm[,3],h="href",grid=1000,same4all=T)

错误

Error: Can't subset columns that don't exist.
x Location 3 doesn't exist.
i There are only 1 column.

我怀疑我的脚本中遗漏了一些东西,但是我还不是一个有经验的用户,所以希望得到一些建议。

数据:

tracks.utm <- dput(new("SpatialPointsDataFrame",data = structure(list(TripID = c(1,1,1)),row.names = c(NA,-6L),class = c("data.frame")),coords.nrs = numeric(0),coords = structure(c(165846.488217799,165846.488227808,165846.488167749,165846.488257839,165846.488237819,165846.488718291,-19995889.0262206,-19995889.0261311,-19995889.0262007,-19995889.0260814,-19995889.0254053),.Dim = c(6L,2L),.Dimnames = list(NULL,c("x","y"))),bBox = structure(c(165846.488167749,.Dim = c(2L,.Dimnames = list(c("x","y"),c("min","max"))),proj4string = new("CRS",projargs = "+proj=utm +zone=60 +datum=wgs84 +units=m +no_defs")))

干杯

解决方法

根据 dput,您的数据中只有一列。检查您的数据是一种很好的做法!如果您查看 str(tracks.utm@data),唯一的列是 TripID,而您正试图指定第三列。

如果您查看函数帮助,您将看到您传递的 xy 参数指定:

继承包含 x 和 y 的 SpatialPoints 类的对象 动物的搬迁。如果 xy 继承类 SpatialPointsDataFrame,它应该只包含一列(因子) 对应于每次搬迁的动物身份。

这意味着 TripID 应该是唯一的列,是一个因子并对应于个体动物 ID。由于预计只有一列,因此不需要指定,只需指定 sp 对象。然而,显然需要单列似乎并非如此,您可以有多个列,但需要指定包含唯一动物 ID 的列,即列括号索引。

为了确保您的动物 ID 是一个因素(根据帮助),我建议将适当的列(例如 TripID)强制转换为一个因素。

library(sp)
library(adehabitatHR)

tracks.utm <- dput(new("SpatialPointsDataFrame",data = structure(list(TripID = c(1,1,1)),row.names = c(NA,-6L),class = c("data.frame")),coords.nrs = numeric(0),coords = structure(c(165846.488217799,165846.488227808,165846.488167749,165846.488257839,165846.488237819,165846.488718291,-19995889.0262206,-19995889.0261311,-19995889.0262007,-19995889.0260814,-19995889.0254053),.Dim = c(6L,2L),.Dimnames = list(NULL,c("x","y"))),bbox = structure(c(165846.488167749,.Dim = c(2L,.Dimnames = list(c("x","y"),c("min","max"))),proj4string = new("CRS",projargs = "+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs")))

tracks.utm@data$TripID <- factor(tracks.utm@data$TripID)
  str(tracks.utm@data) 
( colkud <- adehabitatHR::kernelUD(tracks.utm[,1],h="href",grid=1000,same4all=TRUE) )
  image(colkud)
    points(tracks.utm,pch=20)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。