整理凌乱的坐标以用于测量
Tidying messy coordinates for use in measurements
我有一些相当混乱的度数,十进制分钟坐标(其来源不在我的控制范围内),格式如下(见下文)。我试图最终计算出点之间的距离。
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 打交道,它打败了我,任何帮助都会很棒!
听起来你只需要去除所有多余的白色space。我们可以在这里尝试使用 gsub
和 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
的内部调用将任何出现的两个或更多 space 替换为一个 space。外部调用然后选择性地删除剩余的单个 space 只有 如果它没有被夹在两个数字之间。
我有一些相当混乱的度数,十进制分钟坐标(其来源不在我的控制范围内),格式如下(见下文)。我试图最终计算出点之间的距离。
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 打交道,它打败了我,任何帮助都会很棒!
听起来你只需要去除所有多余的白色space。我们可以在这里尝试使用 gsub
和 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
的内部调用将任何出现的两个或更多 space 替换为一个 space。外部调用然后选择性地删除剩余的单个 space 只有 如果它没有被夹在两个数字之间。