r - R中两个3D点之间的距离
问题描述
我有两个 2 点 A(x,y,z) e B(x1,y1,z1)。我想在时间1,时间2,时间3计算这些点之间的欧几里得距离。
所以,我有一个这样的矩阵:
x y z x1 y1 z1 distance
time1 2 1 2 4 6 8 ?
time2 3 4 3 6 6 7 ?
time3 6 8 9 4 3 3 ?
如上所示,我想添加一列(距离),在其中报告 A e B 之间的欧几里得距离。
你有什么建议吗?
解决方案
您正在寻找以下dist()
功能:
df <- read.table(header = TRUE, text = "
x y z x1 y1 z1
time1 2 1 2 4 6 8
time2 3 4 3 6 6 7
time3 6 8 9 4 3 3")
df$distance <- apply(df, 1, function(x) dist(matrix(x, nrow = 2, byrow = TRUE)))
df
#> x y z x1 y1 z1 distance
#> time1 2 1 2 4 6 8 8.062258
#> time2 3 4 3 6 6 7 5.385165
#> time3 6 8 9 4 3 3 8.062258
来自help("dist")
:
描述
此函数计算并返回通过使用指定的距离度量计算出的距离矩阵,以计算数据矩阵的行之间的距离。
用法
dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2)
所以,如果你给它一个m
像
2 1 2
4 6 8
distance(m)
c(2, 1, 2)
将计算和之间的欧几里得距离c(4, 6, 8)
。然后我们可以对数据集的每一行应用dist()
从该行构造的矩阵调用的函数,其中新矩阵的第一行是数据集该行的x
、y
和z
观察值,而新矩阵的第二行矩阵是数据集那一行的 、 和 观察x1
值y1
。z1
推荐阅读
- python - Visual Studio Code 找不到我的解释器
- javascript - Javascript Fetch API 如何在点击用户时获取用户的帖子详细信息?
- macos - 如何在 Mac 上为 python 2.7 创建虚拟环境?
- angular - 如何在库中共享相同的单例服务实例以及在 Angular 8 中使用该库的项目
- python - 如何在 Python 中使用通配符
- javascript - firebase JS SDK包是否兼容云功能的Node.js环境?为什么要使用 firebase-admin?
- git - 仅添加已修改的已暂存文件
- javascript - 如何从 Node.js 流中释放我的数据
- wordpress - .htaccess 301 仅重定向 1 个文件夹
- reactjs - 反应呼吸动画