我不明白在哪里“错误在其中(z@data$cut):从'ltraj'生成'mvmt'对象时,'which'的参数不符合逻辑

bvuwiixz  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(157)

我试图从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)片段。

nnvyjq4y

nnvyjq4y1#

我仍然不知道确切的问题是什么,但我解决了这个问题,在创建ltraj对象时,我改变了在as.ltraj命令中指定xy=或坐标参数的方式。之前我通过指定前面制作的sp包中的coordinates属性来实现,现在我只指定 Dataframe 中表示x和y的列。

8oomwypt

8oomwypt2#

该错误可能与migrateR包的特定部分有关,该部分在代码段中不可见。如果没有更多的上下文或访问完整的代码和数据,很难诊断问题。但是,我可以提供一些可能有助于您调试问题的一般建议:
1.再次检查输入数据:确保传递给mvmtClass函数的ltraj对象具有正确的结构,并在infoloc字段中包含必要的高程数据。
1.检查migrateR包源代码:正如您提到的,您无法在mvmtClass的代码中看到(z@data$cut)的代码片段。但是,此错误可能来自包中的更深层次,在mvmtClass函数本身中可能无法直接看到。您可以在GitHub(https://github.com/caseywdunn/migrateR)上浏览包的源代码,以了解包如何处理高程数据以及如何使用'cut'参数。
1.更新软件包:确保您使用的是migrateR、adehabitatLT和任何其他依赖包的最新版本。有时软件包更新会修复bug或提高与其他软件包的兼容性。

相关问题