У меня есть два набора данных.Первый содержит список городов и их расстояние в милях от пунктов назначения.Второй список содержит места назначения.Я хочу использовать purrr, чтобы поместить имя ближайшего пункта назначения в новый столбец в первом наборе данных.
Вот первый набор данных (с составленными данными / расстояниями):
library(tidyverse)
data1 <- tibble(city = c("Atlanta", "Tokyo", "Paris"),
dist_Rome = c(1000, 2000, 300),
dist_Miami = c(400, 3000, 1500),
dist_Singapore = c(3000, 600, 2000),
dist_Toronto = c(900, 3200, 1900))
Вот второй набор данных с пунктами назначения:
library(tidyverse)
data2 <- tibble(destination = c("Rome Italy", "Miami United States", "Singapore Singapore", "Toronto Canada"))
И вот как я хочу, чтобы он выглядел следующим образом:
library(tidyverse)
solution <- tibble(city = c("Atlanta", "Tokyo", "Paris"),
dist_Rome = c(1000, 2000, 300),
dist_Miami = c(400, 3000, 1500),
dist_Singapore = c(3000, 600, 2000),
dist_Toronto = c(900, 3200, 1900),
nearest = c("Miami United States", "Singapore Singapore", "Rome Italy"))
В идеале я ищу подходящее решение, и я попыталсясделать это с мурлыканием, но безрезультатно.Это моя неудачная попытка:
library(tidyverse)
solution <- data1 %>%
mutate(nearest_hub = map(select(., contains("dist")), ~
case_when(which.min(c(...)) ~ data2$destination),
TRUE ~ "NA"))
Error in which.min(c(...)) :
(list) object cannot be coerced to type 'double'
Спасибо!