1

我有一些相当混乱的度数,十进制分钟坐标(其来源不受我控制),格式如下(见下文)。我试图最终计算出点之间的距离。

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 搞混(整个早上它都打败了我,任何帮助都会很棒!!

4

1 回答 1

1

听起来你只需要去掉所有多余的空格。我们可以gsub在这里尝试使用 with lookarounds。

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只用一个空格替换两个或多个空格的出现。外部调用然后选择性地删除剩余的单个空格,只有当它没有被夹在两个数字之间时。

于 2018-12-07T11:05:20.133 回答