我有一些相当混乱的度数,十进制分钟坐标(其来源超出了我的控制范围(,格式如下(见下文(。我正试图最终算出这些点之间的距离。
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(整个上午,它打败了我,任何帮助都会很棒!!
听起来你只需要去掉所有多余的空白。我们可以尝试在此处使用带有查找功能的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
的内部调用仅用一个空间替换出现的两个或多个空间。然后,如果剩余的单个空格不夹在两位数字之间,则外部调用选择性地仅删除。