Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为什么我的自定义函数不能正确转换经度和纬度?_R_Function_Latitude Longitude - Fatal编程技术网

R 为什么我的自定义函数不能正确转换经度和纬度?

R 为什么我的自定义函数不能正确转换经度和纬度?,r,function,latitude-longitude,R,Function,Latitude Longitude,我编写了一个代码,将十进制值转换为long/lat坐标,它适用于我的纬度值,但不适用于经度值。它没有四舍五入到正确的小数位。以下是我的功能: convert.lon <- function(x){ #degress d <- as.character(x) d <- str_sub(string = d, start = 1, end = 2) deg <- d #minutes m <- x - as.numeric(d) m

我编写了一个代码,将十进制值转换为long/lat坐标,它适用于我的纬度值,但不适用于经度值。它没有四舍五入到正确的小数位。以下是我的功能:

convert.lon <- function(x){
  #degress
  d <- as.character(x)
  d <- str_sub(string = d, start = 1, end = 2)
  deg <- d
  
  #minutes 
  m <- x - as.numeric(d)
  m <- m*60
  m <- str_sub(string = as.character(m), start = 1, end = 2)
  min <- m
  
  #seconds
  m <- x - as.numeric(d)
  m <- m*60
  s <- m - as.numeric(min)
  s <- round(x=s*60, digits = 4)
  sec <- as.character(s)
  
  #cardinal direction 
  dir <- ifelse(test = x>0, yes = 'E', no= 'W')
  
  #paste together with symbols
  output <- paste0(deg, "º ", min, "' ", sec, '" ', dir)
  noquote(output)
  return(output)
}
下面是它返回的值:

start.lon
-7º -4' -260402.0253" W
-7º -4' -260374.038" W
但我希望它看起来像这样:

start.lon
-7º -4' -26.0402" W
-7º -4' -26.0374" W
你可以做:

convert.lon
start.lon
-7º -4' -26.0402" W
-7º -4' -26.0374" W