as.numeric 将字符转换为数字时缺少 R 减号

R minus sign missing when convert character to numeric by as.numeric

我在文本中有大量空间数据集。我需要将度数 minute.decimal 值转换为十进制度数。我的代码如下。它适用于 0 到 -1 以外的值。通过 as.numeric() 将 0 到 -1 中的值转换为正值 坐标转换方法很好,但问题是如何在 iflese 语句中传递负零 (-0) 值。 我如何克服这个问题?

data <- c("-7ø12.2","-1ø23.0","-0ø50.3","0ø14.6","2ø59.7")
# latitudes in degree minutes.decimal format
lat1 <- as.numeric(gsub( "ø.*$", "", data)) # substring befor ø
lat2 <- as.numeric(sub(".*ø", "", data)) # substring after ø
lat <-  ifelse(lat1 < 0, lat1 - lat2 / 60, lat1 +  lat2 / 60) 

lat1 [1] -7 -1 0 0 2

你正在测试 lat1 < 0lat1[3]0 所以测试失败,你的 ifelse 命中加法结果。您似乎希望 -0 保持负值,但 0 并非如此。

添加另一个提取(负号):

neg <- substr(data, 1, 1)
neg
#> [1] "-" "-" "-" "0" "2"

并测试它而不是 lat1 < 0

ifelse(neg == "-", lat1 - lat2 / 60, lat1 +  lat2 / 60) 
#> [1] -7.2033333 -1.3833333 -0.8383333  0.2433333  2.9950000