如何在R语言中用for循环获取指定成对元素并计算距离?
R语言实现指定元素组合的距离计算与矩阵存储
完整实现代码
# 创建示例矩阵 m <- matrix(c(1,2,3,4,5,6), ncol = 2, byrow = FALSE) # 自定义距离函数(替换为你自己的实现即可) my.distance.measurement.function <- function(x, y) { abs(x - y) # 示例:计算绝对值差,可替换为你的自定义逻辑 } # 初始化距离矩阵,行对应第一列元素,列对应第二列元素 distance.matrix <- matrix(NA, ncol = nrow(m), nrow = nrow(m)) # 嵌套for循环遍历所有目标组合 for (i in 1:nrow(m)) { for (j in 1:nrow(m)) { # 取第一列第i个元素和第二列第j个元素计算距离,存入对应位置 distance.matrix[i,j] <- my.distance.measurement.function(m[i,1], m[j,2]) } } # 输出结果 distance.matrix
代码说明
- 外层循环
i遍历矩阵的每一行,每次取第一列的元素m[i,1] - 内层循环
j遍历矩阵的每一行,每次取第二列的元素m[j,2] - 两次循环的组合正好覆盖你需要的所有成对元素:
i=1时:(m[1,1],m[1,2])、(m[1,1],m[2,2])、(m[1,1],m[3,2])i=2时:(m[2,1],m[1,2])、(m[2,1],m[2,2])、(m[2,1],m[3,2])i=3时:(m[3,1],m[1,2])、(m[3,1],m[2,2])、(m[3,1],m[3,2])
运行结果示例
执行代码后,得到的距离矩阵如下:
[,1] [,2] [,3] [1,] 3 4 5 [2,] 2 3 4 [3,] 1 2 3
内容的提问来源于stack exchange,提问作者Braydon
相关产品推荐
相关产品推荐

