Вы можете попробовать этот метод, используя dplyr
и tidyr
:
library(dplyr)
library(tidyr)
n <- 10
df %>%
pivot_longer(cols = everything(),
names_to = c('col', '.value'),
names_sep = '_') %>%
select(-col) %>%
summarise(lon = list(seq(max(lon), min(lon), length.out = n)),
lat = list(seq(min(lat), max(lat), length.out = n))) %>%
unnest(cols = c(lat, lon))
# A tibble: 10 x 2
# lon lat
# <dbl> <dbl>
# 1 -84.4 33.6
# 2 -84.8 34.6
# 3 -85.2 35.5
# 4 -85.6 36.4
# 5 -86.0 37.3
# 6 -86.4 38.3
# 7 -86.7 39.2
# 8 -87.1 40.1
# 9 -87.5 41.0
#10 -87.9 42.0
Здесь мы сначала получаем данные в длинном формате, где широта и долгота указаны в соответствующих столбцах. Затем мы создаем последовательность между max
и min
значениями в этих столбцах соответственно с выходом длины n
.
данные
df <- structure(list(origin_lon = -84.42778, origin_lat = 33.63667,
dest_lon = -87.90667, dest_lat = 41.9744), class = "data.frame",
row.names = c(NA, -1L))