在 R 中使用完整的我的数据集时出现 pointDistance() 错误

问题描述

早上好,

我创建了函数,用于从原始数据中获取具有相同属性的点之间的总距离。

它适用于数据集的一个区域,甚至是数据集的一半。我尝试了一半,然后分别尝试了另一半,两者都可以正常工作。 但是 当我尝试使用完整数据集时,由于某种原因会出现一条错误消息。我提供更多详细信息:

  • 我使用 pointdistance() 来计算距离(在 for 循环中,我读过它更快更好)
  • 点以米为单位,没有 wgs84 坐标(纬度、经度)
  • 数据集包含 4 个变量的大约 123000 个观察值

错误在使用 pointdistance(df$x,df$y,lonlat=FALSE,allpairs=FALSE) 时特别出现,这就是他们所说的(添加回溯):

 Error in .pointsToMatrix(p1) : 
  Highly SUSPECT column names (longitude and latitude reversed?) 

6. stop("Highly SUSPECT column names (longitude and latitude reversed?)") 
5. .pointsToMatrix(p1) 
4. pointdistance(z1[i,],z1[i + 1,lonlat = FALSE,allpairs = FALSE) at Functions.r#225
3. calculate_distance(aux) at Functions.r#247
2. calculate_tracklength(aux) at Functions.r#301
1. track_length(strecke_ch,1,10) 

有什么建议吗?也许使用另一种方法或改变一些东西。

解决方法

一种解释是,df 与您制作的子集不同。我们无法知道,因为您没有提供任何证据。您至少应该显示一些数据,例如str(df)

 pointDistance(df$x,df$y,lonlat=FALSE,allpairs=FALSE) 

错误消息表明 x 和 y 中的变量名称是“纬度”、“经度”(或其某些变体),按(错误的)顺序排列。但如果您不提供更多信息,我们将无法为您提供帮助。

制作 df 的子集(例如 5 个点)并显示值也很好,您可以使用这些数据运行 pointDistance。也就是说,虽然您可能无法共享所有数据,但您可以举一个小例子,并证明更大的数据集实际上是等效的。

调用 pointDistance 时发生 track_length(strecke_ch,1,10) 错误。想必那是你自己的功能。问题的最可能原因是调用 pointDistance 之前的错误。但是我们怎么知道?