基于euclidean函数的moves向量点对欧氏距离计算实现问询
修正R代码实现点对生成与欧氏距离计算
需求明确
- 从
moves向量中提取无重叠的(x,y)点集合(每两个连续元素组成一个点) - 计算相邻点之间的欧氏距离
- 将所有距离结果通过
append()存入vector_of_pairs_distance向量
修正后的完整代码
# 定义二维欧氏距离计算函数 euclidean <- function(point1, point2) { sqrt((point2[1] - point1[1])^2 + (point2[2] - point1[2])^2) } # 示例原始moves向量(按x1,y1,x2,y2...xn,yn顺序排列) moves <- c(3, 5, 7, 11, 13, 17, 89, 97) # 将moves转换为(x,y)点矩阵(无重叠提取所有目标点) points_matrix <- matrix(moves, ncol = 2, byrow = TRUE) # 初始化存储距离的向量 vector_of_pairs_distance <- c() # 遍历相邻点对,计算距离并追加到目标向量 for (i in 1:(nrow(points_matrix) - 1)) { current_dist <- euclidean(points_matrix[i, ], points_matrix[i + 1, ]) vector_of_pairs_distance <- append(vector_of_pairs_distance, current_dist) } # 输出结果查看 print(vector_of_pairs_distance)
代码关键步骤说明
- 欧氏距离函数:实现标准的二维空间两点距离公式,参数为两个包含x、y坐标的向量,返回距离值。
- 点矩阵转换:利用
matrix()的byrow=TRUE参数,将moves向量按每2个元素为一行拆分,直接生成所有目标(x,y)点的矩阵,确保无重叠提取。 - 相邻点对遍历:通过循环遍历点矩阵的相邻行(从第1行到倒数第2行),依次计算每对相邻点的距离,使用
append()将结果逐个存入目标向量,完全匹配需求要求的存储方式。
示例输出
针对给出的示例moves向量,运行代码后会得到如下距离结果:
[1] 7.211103 8.485281 110.344914
内容的提问来源于stack exchange,提问作者Data Science Analytics Manager
相关产品推荐
相关产品推荐

