R:具有“ mapdist”功能的ggmap翻转输出距离

问题描述 投票:0回答:1

确定

下面是可复制的示例,但是您将需要Google API来提供帮助。这是我所看到的行为的快速示例。

给出以下代码:

test.1 <- data.frame(rbind("02908", "98144"), c("60612", "60612"),
                     stringsAsFactors = FALSE)
colnames(test.1) <- c("from", "to")
library(ggmap)
Distance <- mapdist(from = test.1$from,
                       to = test.1$to,
                       mode = "driving",
                       output = "simple")
Distance

产生以下输出:

> Distance
# A tibble: 2 x 9
  from  to          m    km miles seconds minutes hours mode   
  <chr> <chr>   <int> <dbl> <dbl>   <int>   <dbl> <dbl> <chr>  
1 02908 60612 3321774 3322. 2064.  109087   1818.  30.3 driving
2 98144 60612 1562693 1563.  971.   53819    897.  14.9 driving

但是当我手动执行搜索时,使用以下命令:

mapdist(from = "02908",
        to   = "60612",
        mode = "driving",
        output = "simple")

mapdist(from = "98144",
        to   = "60612",
        mode = "driving",
        output = "simple")

我分别获得以下输出:

# A tibble: 1 x 9
  from  to          m    km miles seconds minutes hours mode   
  <chr> <chr>   <int> <dbl> <dbl>   <int>   <dbl> <dbl> <chr>  
1 02908 60612 1562693 1563.  971.   53819    897.  14.9 driving

# A tibble: 1 x 9
  from  to          m    km miles seconds minutes hours mode   
  <chr> <chr>   <int> <dbl> <dbl>   <int>   <dbl> <dbl> <chr>  
1 98144 60612 3321774 3322. 2064.  109087   1818.  30.3 driving

如您所见,当我分别为每个“从/到”进行呼叫时,与从数据帧进行呼叫时完全相反。或者,更重要的是,当我直接发出请求时,从“ 02908”到“ 60612”的距离= 971英里,但是当调用来自数据帧时,则为2064英里。更糟糕的是,似乎单个调用是正确的,但是来自数据帧的调用是错误的。当然,我想对很多“从/到”对进行此操作。

任何帮助都会非常感激。

谢谢。

r google-maps-api-3 ggmap
1个回答
0
投票

许多人对本。我现在看到了未解决的问题。在此期间,类似于我在Github中的问题中发现的那样,我在数据框的每一行中循环了该函数,并将列表缝合回了日期框。尽管笨拙,但似乎确实能达到预期的效果。

test.Distance = apply(test.1,
                      1,
                      function(l) {mapdist(from = l[1],
                                           to = l[2])})


test.Distance <- data.frame(matrix(unlist(test.Distance),
                                   nrow = length(test.Distance),
                                   byrow = T))
colnames(test.Distance) <- c("from", "to", "m", "km", "miles", "seconds",
                             "minutes", "hours", "mode")
> test.Distance
   from    to       m       km        miles seconds          minutes            hours    mode
1 02908 60612 1562693 1562.693  971.0574302   53819 896.983333333333 14.9497222222222 driving
2 98144 60612 3321774 3321.774 2064.1503636  109087 1818.11666666667 30.3019444444444 driving
© www.soinside.com 2019 - 2024. All rights reserved.