在dplyr中迭代创建多个新的mutate列-纬度和经度

时间:2018-07-11 23:29:17

标签: r dplyr latitude-longitude mutate geosphere

我有一个经度和纬度列表(每行包含一个标签数字,2个点,它们之间形成一条线),我试图找到从每行中的一个端点到所创建的线的距离列表中的每隔一行。我正在使用geosphere(dist2gc)软件包和dplyr。我正在尝试通过循环执行此操作(因为我无法弄清楚如何执行该操作),并且我想使用每个比较的距离创建一个新列(因此,如果我从10行开始,我将比较10行乘以10,并有10个新列,其中每行与行的距离相等。如果我从10x8 data.frame开始,输出将是10x18 data.frame。

临时列名不起作用。请帮忙!

有人可以帮助我提出使变量命名起作用的方法,或其他实现此目的的方法吗?

dist <- function(df){
 idx <- seq(1, nrow(df)) # create index values
 namelist <- df[,2] # extract name list for new columns
  for (i in idx){
   templon <- df[i,3] # pull comparison value point for lat and lon
   templat <- df[i,4]
   tempcoln <- namelist[i]
   df <- mutate(df, !! tempcoln := dist2gc(cbind(Longitude1, Latitude1), 
     cbind(Longitude2, Latitude2), cbind(templon, templat), r=radius, 
     sign=FALSE))
  }
  return(df)
}

0 个答案:

没有答案