确定
下面是可复制的示例,但是您将需要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英里。更糟糕的是,似乎单个调用是正确的,但是来自数据帧的调用是错误的。当然,我想对很多“从/到”对进行此操作。
任何帮助都会非常感激。
谢谢。
许多人对本。我现在看到了未解决的问题。在此期间,类似于我在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