我正在寻找一种方法来以成对的方式计算点之间的分离距离,并将每个单独点的结果存储在随附的嵌套数据框中。
例如,我有这个数据框(来自 maps 包),其中包含有关我们城市的信息,包括它们的物理位置。我已丢弃其余信息并将坐标嵌套在嵌套数据框中。我打算distHaversine()
从geosphere
包中使用来计算这些距离。
library(tidyverse)
df <- maps::us.cities %>%
slice(1:20) %>%
group_by(name) %>%
nest(long, lat, .key = coords)
name coords
<chr> <list>
1 Abilene TX <tibble [1 x 2]>
2 Akron OH <tibble [1 x 2]>
3 Alameda CA <tibble [1 x 2]>
4 Albany GA <tibble [1 x 2]>
5 Albany NY <tibble [1 x 2]>
...(With 15 more rows)
我已经研究过将 map 系列函数与 mutate 结合使用,但我遇到了困难。所需结果的形式如下:
name coords sep_dist
<chr> <list> <list>
1 Abilene TX <tibble [1 x 2]> <tibble [19 x 2]>
2 Akron OH <tibble [1 x 2]> <tibble [19 x 2]>
3 Alameda CA <tibble [1 x 2]> <tibble [19 x 2]>
4 Albany GA <tibble [1 x 2]> <tibble [19 x 2]>
5 Albany NY <tibble [1 x 2]> <tibble [19 x 2]>
...(With 15 more rows)
sep_dist 小标题看起来像这样:
location distance
<chr> <dbl>
1 Akron OH 1003
2 Alameda CA 428
3 Albany GA 3218
4 Albany NY 3627
5 Albany OR 97
...(With 14 more rows) -distances completely made up
其中 location 是与名称进行比较的点(在本例中为 Abilene)。