【问题标题】:Distance matrix in RR中的距离矩阵
【发布时间】:2022-01-12 01:06:53
【问题描述】:

我必须使用 R 创建一个距离矩阵。我的数据在一个包含 300 行和 10 列的 Excel 文件中。我必须根据第 9 列的值创建距离矩阵。例如

   s s s s s
s  1
s  2 2
s  3 3 4
s  4 4 7 3
s  5 5 8 2 8

如何创建这种类型的矩阵?

【问题讨论】:

  • 你知道如何将数据从excel中取出到R中吗?你真的在这里问了两个问题。

标签: r matrix


【解决方案1】:

我知道的最简单的选择是将包含数据的 Excel 工作表保存为 CSV 文件。确保只有工作表的第一行和第一列包含任何样本或变量名称。

然后使用以下命令读入 R:

dat <- read.csv("path/to/my/file.csv")

然后使用第 9 列的dist() 计算相异矩阵

dij <- dist(dat[, 9])

如果您想要欧几里得距离以外的其他值,请参阅 ?dist 中的选项,如果不适合,请尝试推荐包 clustervegdist() 中的 daisy() 函数vegan 包或 proxy 包中的函数。

【讨论】:

  • @Simpson 我试过你的代码。但我得到了这样的错误.dij
【解决方案2】:

如果您的数字位于名为 z 的向量中,则 dist(z) 返回欧几里得 (sqrt(dx^2+dy^2)) 值的距离矩阵。请参阅help(dist) 了解更多信息。

【讨论】:

  • 快速而肮脏的答案是快速而肮脏的......可能比你在 r-help: "?dist" 上得到的更长:"?dist"