Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在is.character(i):';中使用Adehilitathr错误获取最小凸多边形时遇到问题;i';不见了_R - Fatal编程技术网

在is.character(i):';中使用Adehilitathr错误获取最小凸多边形时遇到问题;i';不见了

在is.character(i):';中使用Adehilitathr错误获取最小凸多边形时遇到问题;i';不见了,r,R,我正在尝试使用17只动物的位置数据创建最小凸多边形。我创建了一个包含两个组件的列表,一个组件是每个动物的id号(我计算了id号),另一个组件是xy位置,类“空间点”。据我所知,数据的格式与Adehilitathr文档的详细信息相同,但当我去计算MCP时,我得到一个错误消息: Error in is.character(i) : 'i' is missing In addition: Warning message: In rel[, 1] : j index ignore

我正在尝试使用17只动物的位置数据创建最小凸多边形。我创建了一个包含两个组件的列表,一个组件是每个动物的id号(我计算了id号),另一个组件是xy位置,类“空间点”。据我所知,数据的格式与Adehilitathr文档的详细信息相同,但当我去计算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)
任何关于我的数据组织可能有什么问题的想法都将不胜感激!谢谢

这里,当我将其转换为数据帧时会发生什么

     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
lynxdata2头(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我假设您试图从
rel
中提取
x
值?出于某种奇怪的原因,SpatialPoints类只允许按行而不是按列进行子集设置。这就是为什么我们会犯这样的错误。提取数据的一种方法是将其转换为data.frame,然后提取列。因此,您可以将最后一行替换为

cp <- mcp(as.data.frame(rel)[,1], percent=95)

cp
class(rel)
返回什么?看起来它不喜欢你索引那个变量的方式。嗨,类(rel)告诉我rel是一个分类为“空间点”的变量。我在上面的问题中添加了一些代码。我的错误是,我想同时提取x和y,第一列应该是动物ID号。因此,我修复了我的数据集,使其不再是一个包含系数id#和满足点xy位置的列表。现在它是一个数据帧,所以第一列是id#,第二列是x,第三列是Y。但是,当我尝试mcp函数时,我得到一个新的错误,说xy必须是类空间点。我编辑了上面的代码来说明。@user3088823好吧,我不知道
mcp
函数应该做什么,但是从您的错误消息来看,它确实需要一类
SpatialPoints
而不是data.frame。那么只需
cp Hi,那么mcp函数应该获取这个位置列表,通过动物id将它们分开(第1列),然后围绕每个动物的位置绘制一个最小凸多边形。这是一种估算每种动物的活动范围边界的方法。我试着使用cp@user3088823如果
class(rel)=“SpatialPoints”
并且它说不是,那么一定是出了问题。很抱歉我已经对目前可能出现的问题绞尽脑汁了。
cp <- mcp(as.data.frame(rel)[,1], percent=95)