我试图从R中的migrateR
包创建一个mvmt
对象。
我将adehabitatLT
包中的ltraj
传递给mvmtClass
命令,并获得一个mvmt
对象。当使用NSD(净平方位移)模型执行此操作时,代码工作正常。但是,该软件包有一个选项来处理高程数据,这些数据包含在ltraj
对象中作为infoloc
作为高程的数值。
当我尝试这条线:
dt.migrater.elev <- mvmtClass(dt.ltraj , fam = "elev")
我得到错误:
Error in which(z@data$cut) : argument to 'which' is not logical
我不明白这个错误是从哪里来的,也不知道which
命令应该对cut
参数做什么。
我在ltraj
对象中看不到cut
参数,在mvmtClass的代码中也看不到which(z@data$cut)
片段。
2条答案
按热度按时间nnvyjq4y1#
我仍然不知道确切的问题是什么,但我解决了这个问题,在创建
ltraj
对象时,我改变了在as.ltraj
命令中指定xy=
或坐标参数的方式。之前我通过指定前面制作的sp
包中的coordinates
属性来实现,现在我只指定 Dataframe 中表示x和y的列。8oomwypt2#
该错误可能与migrateR包的特定部分有关,该部分在代码段中不可见。如果没有更多的上下文或访问完整的代码和数据,很难诊断问题。但是,我可以提供一些可能有助于您调试问题的一般建议:
1.再次检查输入数据:确保传递给mvmtClass函数的ltraj对象具有正确的结构,并在infoloc字段中包含必要的高程数据。
1.检查migrateR包源代码:正如您提到的,您无法在mvmtClass的代码中看到(z@data$cut)的代码片段。但是,此错误可能来自包中的更深层次,在mvmtClass函数本身中可能无法直接看到。您可以在GitHub(https://github.com/caseywdunn/migrateR)上浏览包的源代码,以了解包如何处理高程数据以及如何使用'cut'参数。
1.更新软件包:确保您使用的是migrateR、adehabitatLT和任何其他依赖包的最新版本。有时软件包更新会修复bug或提高与其他软件包的兼容性。