You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中设计循环计算欧氏距离矩阵行列式的问题

解决样本对欧氏距离矩阵行列式计算问题

需求说明

计算数据中每一对样本(行)对应的欧氏距离矩阵的行列式,将结果存入一个10×10的矩阵中。

输入数据

B1  B2  B3  B4  B5  B6  B7  B8  B9  B10
1.9361  0.7853  0.5712  0.5016  0.5810  2.0227  1.7226  2.0001  1.6323  6.6512
2.3522  0.7290  2.0117  1.7894  0.0713  3.0918  1.9928  1.1333  1.4660  14.4510
4.3108  0.7214  1.5651  1.7867  0.0735  5.8460  2.0292  1.8760  2.3937  8.2364
2.2691  0.5049  2.6493  0.6146  0.7974  2.2468  2.0926  0.0885  3.4009  9.7462
1.8998  2.2141  0.2181  0.3453  0.6772  2.7952  2.2791  0.0375  1.6316  6.8325
0.3257  0.6846  0.4051  0.0512  0.2725  3.3828  4.0382  0.3351  0.6275  12.1081
3.3382  1.1726  0.8915  0.8372  0.0773  3.0122  3.0418  0.1817  0.7314  9.9699
0.2584  0.9524  1.3239  0.8226  0.8196  3.6540  2.7760  2.9318  0.3876  2.2691
1.8043  0.5707  0.1201  0.4234  0.4814  2.6493  2.1548  5.1866  0.8284  5.8460
0.6721  2.8143  0.3053  0.3186  0.7406  2.2141  2.7952  0.3861  3.0918  1.7867

原代码问题分析

  1. 数据提取错误:Network_Matrix[i,j]仅提取单个单元格值,而非第i行和第j行的全部特征列,导致dist无法生成有效距离矩阵。
  2. 矩阵赋值逻辑混乱:循环中重复覆盖Euclidean_Distance_Matrix,未针对当前样本对生成临时矩阵。
  3. 数据读取方式不当:原数据为空格分隔,read.csv默认逗号分隔会导致读取错误。

修正后的代码

# 读取空格分隔的数据
Network <- read.table("Index.csv", header = TRUE, stringsAsFactors = FALSE)
Network_Matrix <- as.matrix(Network)

# 初始化结果矩阵,默认填充0(对应i==j的情况)
Mod_Euclidean_Distance_Matrix <- matrix(0, nrow = 10, ncol = 10)

# 遍历所有样本对计算行列式
for (i in 1:10) {
  for (j in 1:10) {
    if (i != j) {
      # 提取第i、j行的样本组成子矩阵
      pair_samples <- Network_Matrix[c(i, j), ]
      # 生成2×2的欧氏距离矩阵
      dist_mat <- as.matrix(dist(pair_samples, method = "euclidean", diag = TRUE, upper = TRUE))
      # 计算行列式并赋值
      Mod_Euclidean_Distance_Matrix[i, j] <- det(dist_mat)
    }
  }
}

# 输出结果
Mod_Euclidean_Distance_Matrix

关键修正说明

  • 改用read.table读取空格分隔的数据,避免读取错误。
  • 正确提取样本对的完整行数据,确保dist生成2×2的有效距离矩阵。
  • 初始化结果矩阵时默认填充0,处理i==j的情况(此时距离矩阵为1×1的0矩阵,行列式为0)。
  • 使用临时变量dist_mat存储当前样本对的距离矩阵,避免数据覆盖。

补充:两个样本的欧氏距离矩阵结构为[[0, d], [d, 0]],其行列式为-d²(d为两样本的欧氏距离),可通过直接计算距离平方的负数验证结果正确性。

内容的提问来源于stack exchange,提问作者Abhishek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:36:21