我正在尝试使用来自17只动物的位置数据创建最小凸多边形。我创建了一个包含两个组件的列表,一个组件是每个动物的id号(我考虑了id号),另一个组件是xy位置,类“SpatialPoints”。据我所知,数据的格式与adehabitatHR文档的详细信息一样,但当我去计算MCP时,我得到一个错误信息:
Error in is.character(i) : 'i' is missing
In addition: Warning message:
In rel[, 1] : j index ignored
这是我到目前为止的代码:
sdata@data = data.frame(sdata@data, v[match(rownames(sdata@data), rownames(v)),])
sdata2 = sdata[(sdata$'usvsa' == '1'),(1:9)]
sdata2$lynx<-as.factor(sdata2$lynx) #"lynx" is the name of the id# column
sdata2=sdata2[-(1:8)]
sdata2<-as.data.frame(sdata2)
location=sdata2[-(3)]
location<-SpatialPoints(location)
id=sdata2[-(1:2)]
lynxdata<- list(name= id, relocs=location)
rel<- lynxdata$relocs
cp <- mcp(rel[,1], percent=95)
以下是lynxdata列表的摘要:
> summary(lynxdata)
Length Class Mode
name 1 data.frame list
relocs 20623 SpatialPoints S4
> class (rel)
[1] "SpatialPoints"
attr(,"package")
[1] "sp"
关于组织我的数据可能出错的任何想法都将非常感谢!谢谢!
当我将其转换为数据框时会发生什么
lynxdata2<-as.data.frame(lynxdata)
> head(lynxdata2)
lynx relocs.x relocs.y
1 306 605738.8 1644068
2 306 605504.2 1644478
3 306 605503.0 1644456
4 306 605352.8 1647556
5 306 605437.8 1648239
6 306 605353.8 1648314
> cp <- mcp(lynxdata2[,1], percent=95)
Error in mcp(lynxdata2[, 1], percent = 95) :
xy should be of class SpatialPoints
答案 0 :(得分:0)
我假设您尝试从x
中提取rel
值?由于某些奇怪的原因,SpatialPoints类仅允许按行而不是列进行子集化。这就是为什么会遇到这个特殊的错误。提取数据的一种方法是将其转换为data.frame,然后提取列。所以你可以用
cp <- mcp(as.data.frame(rel)[,1], percent=95)