我得到了每个物种ID之间的距离矩阵.我如何获得该矩阵来显示个人的实际ID,而不是行号?

library(sf)

species <- data.frame(longitude = c(-106.425668, -96.111617, -96.5,-96.5, -96.5, -96.5), 
                      latitude = c(23.18127, 15.779873, 19.68, 19.68, 19.68, 19.68), 
                      id = c("0-1","0-2","0-3","0-4","0-5","0-6"))

species_sf <- st_as_sf(species, coords = c("longitude", "latitude"), crs = 4326)

st_distance(species_sf)

我的输出如下:

Units: [m]
        [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
[1,]       0 1357855.2 1098291.3 1098291.3 1098291.3 1098291.3
[2,] 1357855       0.0  435620.5  435620.5  435620.5  435620.5
[3,] 1098291  435620.5       0.0       0.0       0.0       0.0
[4,] 1098291  435620.5       0.0       0.0       0.0       0.0
[5,] 1098291  435620.5       0.0       0.0       0.0       0.0
[6,] 1098291  435620.5       0.0       0.0       0.0       0.0

我想让方括号显示真实的物种ID.

谢谢.

推荐答案

您可以使用rownames()&;colnames()设置名称:

species_sf |>
  st_distance() |>
  `rownames<-`(species_sf$id) |>
  `colnames<-`(species_sf$id)
#> Units: [m]
#>         0-1       0-2       0-3       0-4       0-5       0-6
#> 0-1       0 1357855.2 1098291.3 1098291.3 1098291.3 1098291.3
#> 0-2 1357855       0.0  435620.5  435620.5  435620.5  435620.5
#> 0-3 1098291  435620.5       0.0       0.0       0.0       0.0
#> 0-4 1098291  435620.5       0.0       0.0       0.0       0.0
#> 0-5 1098291  435620.5       0.0       0.0       0.0       0.0
#> 0-6 1098291  435620.5       0.0       0.0       0.0       0.0

R相关问答推荐

如何判断某列中由某些行组成的百分比

高质量地将R格式的图表从Word中输出

在R中查找每个组不同时间段的总天数

如果行和大于值,则过滤

如何得到R中唯一的组合群?

制作等距离的线串副本

如何根据嵌套元素的名称高效而优雅地确定它属于哪个列表?

使用data.table::fcase()而不是dplyr::case_When()时保持值

使用R中的正则表达式将一列分割为多列

使用带有OR条件的grepl过滤字符串

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

Data.table';S GForce-将多个函数应用于多列(带可选参数)

使用R中的dist()迭代ID匹配的欧几里德距离

将列的值乘以在不同数据集中找到的值

有没有办法将不等长的列表转换为R中的数据帧

我需要使用ggplot2制作堆叠条形图

如何合并不同列表中的数据文件,包括基于名称的部分匹配,而不是一对一等价

如何在不使用SHINY的情况下将下拉滤镜列表添加到ggploy?

子样本间系数检验的比较

从单个html段落中提取键-值对