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

如何基于R数据框中的样本坐标计算欧式距离矩阵?

如何用R计算数据框中样本坐标的欧式距离矩阵

直接用dist函数就能实现,核心是只传入样本的坐标列,而非包含ID的完整数据框。以下是完整解决代码:

# 你的示例数据
sample <- c("s1","s2","s3")
x <- c(12,10,5)
y <- c(8,6,15)
df <- data.frame(sample, x, y)

# 提取x、y坐标列,计算两两欧式距离并转为矩阵
dist_matrix <- as.matrix(dist(df[, c("x", "y")]))

# 设置矩阵行/列名为样本ID,方便对比
rownames(dist_matrix) <- df$sample
colnames(dist_matrix) <- df$sample

# 输出结果
dist_matrix

运行后会得到你需要的3×3距离矩阵,结果示例:

s1       s2       s3
s1 0.000000 2.828427 9.219544
s2 2.828427 0.000000 9.433981
s3 9.219544 9.433981 0.000000

关键说明:

  • dist()函数默认计算欧式距离,只需传入纯数值的坐标数据(每行对应一个样本的坐标),会自动完成所有样本两两间的距离计算。
  • 若之前出错,大概率是把含字符型样本ID的列也传入了dist(),导致函数无法处理非数值数据。
  • 如需其他距离类型(如曼哈顿距离),可通过method参数指定,例如dist(df[, c("x", "y")], method = "manhattan")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:12:37