Приведение в порядок грязных координат для использования в измерениях

У меня есть несколько довольно грязных градусов, координаты десятичных минут (источник которых находится вне моего контроля) в следующем формате (см. Ниже). В конечном итоге я пытаюсь определить расстояние между точками.

minlat <- "51  12.93257'"
maxlat <- "66  13.20549'"
minlong <- "- 5   1.23944'"
maxlong <- "- 5   1.36293'"

Как они есть, они в довольно недружественном формате для (от measurements упаковка):

measurements::conv_unit(minlat, from = 'deg_dec_min', to = 'dec_deg')

и в конечном итоге

distm(c(minlong, minlat), c(maxlong, maxlat), fun = distHaversine)

Я думаю, что мне нужно использовать gsub(чтобы перевести их в дружественный формат, и я хотел бы, чтобы они были

minlat <- 51 12.93257 # removing the double space
minlong <- -4 1.36293 # removing the double space and the space after the -

Я бездельничал с gusb(все утро, и это избило меня, любая помощь была бы большой!!

1 ответ

Решение

Похоже, вам просто нужно удалить все лишние пробелы. Мы можем попробовать использовать gsub с осторожностью здесь.

minlong <- " - 5   1.23944 "   # -5 1.23944
minlong
gsub("(?<=^|\\D) | (?=$|\\D)", "", gsub("\\s+", " ", minlong), perl=TRUE)

[1] " - 5   1.23944 "
[1] "-5 1.23944"

Внутренний призыв к gsub заменяет любое вхождение двух или более пробелов только одним пробелом. Внешний вызов затем выборочно удаляет оставшийся одиночный пробел, только если он не помещен между двумя цифрами.

Другие вопросы по тегам