Приведение в порядок грязных координат для использования в измерениях
У меня есть несколько довольно грязных градусов, координаты десятичных минут (источник которых находится вне моего контроля) в следующем формате (см. Ниже). В конечном итоге я пытаюсь определить расстояние между точками.
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
заменяет любое вхождение двух или более пробелов только одним пробелом. Внешний вызов затем выборочно удаляет оставшийся одиночный пробел, только если он не помещен между двумя цифрами.