首页 > 解决方案 > 如何计算R中三维坐标系中两点之间的距离

问题描述

我正在尝试计算三维坐标系中两点之间的距离。我有两点:1)“释放”(x,y,z),2)“重新捕获”(x,y,z)。我想为每个重新捕获的人计算这两个点之间的欧几里得距离。

我在 R 中导入的数据集如下所示:

|              | Rel_x   | Rel_y   | Rel_z  | Rec_x   | Rec_y   | Rec_z  | Distance |
|--------------|---------|---------|--------|---------|---------|--------|----------|
| Individual_1 | 231.114 | 177.002 | 17.329 | 228.288 | 178.908 | 17.243 | ?        |
| Individual_2 | 239.028 | 178.789 | 16.526 | 239.057 | 178.706 | 16.499 | ?        |
| Individual_3 | 212.109 | 210.142 | 18.791 | 212.300 | 208.693 | 18.372 | ?        |

我还想添加一列(距离)来报告“Release”和“Recapture”两点之间的欧几里得距离。

我曾尝试使用 dist() 函数,但我不确定我的代码行是否正确,例如

dist (data_set), method = "euclidean", diag = FALSE, upper = FALSE, p = 2) 

当我运行这行代码时,我收到以下信息:

Warning message: In dist(data_set) : NAS introduced by coercion 

你有什么建议吗?

标签: reuclidean-distance

解决方案


将数据框一分为二,分别为每个点 Release 和 Recapture,然后计算 Euclidean 度量。

例如,假设您的数据框名为df,前三列用于第一个点,接下来的 3 列用于第二个点:

sqrt(rowSums(((df[,1:3]-df[,4:6])^2))

推荐阅读