当使用R将混合的纬度集从度分转换为十进制度时,如何避免由于南纬的负号而发生错误

How to avoid error ocuured due to minus sign of southern latitudes when mixed set of latitudes convert from degrees minutes to decimal degree using R

我在数据框中混合了北(正)和负纬度列的数据集以及单独的分钟列。我使用简单的 Lat + (minutes/60) 将其转换为十进制度数。

lat1 <- c(7, -7, 6,  -0, -1, 6,  8, -7, 6,  6)
lat2 <- c(7.4, 55.7, 32.6,  8.9, 47.5, 25.6,  6.8, 45.7, 24.6,  7.6)

ifelse(lat1<0,(lat <- lat1-(lat2/60)),(lat <- lat1+(lat2/60)))

>[1]  7.1233333 -7.9283333  6.5433333  0.1483333 -1.7916667  6.4266667
 [7]  8.1133333 -7.7616667  6.4100000  6.1266667

这个结果是正确的但是

> lat
 [1]  7.1233333 -6.0716667  6.5433333  0.1483333 -0.2083333  6.4266667
 [7]  8.1133333 -6.2383333  6.4100000  6.1266667

ifelse 语句在 R 控制台中提供正确的结果但未将其存储到向量中 "lat" 如果学位值为正,我需要将 minutes/60 添加到学位,如果学位值为负,我需要从学位中减去 minutes/60

此处使用 ifelse 的正确语法如下:

lat <-  ifelse(lat1 < 0, lat1 - lat2 / 60, lat1 +  lat2 / 60)

ifelse returns 一个向量 where component i = lat1[i] - lat2[i] / 60 if lat[i] < 0 and lat[1] + lat2[i] / 60 otherwise 所以你不需要把赋值放在里面.