我正在尝试使用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发布于 2014-06-21 01:47:15
我假设您正在尝试从rel中提取x值?出于某种奇怪的原因,SpatialPoints类只允许按行设置子集,而不允许按列设置子集。这就是为什么我们得到了那个特殊的错误。提取数据的一种方法是将其转换为data.frame,然后提取列。因此,您可以将最后一行替换为
cp <- mcp(as.data.frame(rel)[,1], percent=95)https://stackoverflow.com/questions/24309953
复制相似问题