Mapdist:错误is.character(from)

时间:2016-05-09 21:42:30

标签: r google-maps

我的数据集包括对应于起始坐标的列“拾取”和行程的结束坐标的“下降”。像:

pickup                 dropoff 
40.77419,-73.872608    40.78055,-73.955042
40.7737,-73.870721     40.757007,-73.971953

我想计算Google地图建议的最短路线,并将计算保存在新列中。这就是我正在做的事情:

 X$GoogleDist <- mapdist(from= list(X$pickup), 
    to = list(X$dropoff), 
    mode = "driving" ,
    output = "simple", messaging = FALSE, sensor = FALSE,
    language = "en-EN", override_limit = FALSE)

这给了我以下错误:

  Error: is.character(from) is not TRUE

1 个答案:

答案 0 :(得分:2)

你可以做到

library(ggmap)
X <- read.table(header=TRUE, text="pickup                 dropoff 
40.77419,-73.872608    40.78055,-73.955042
40.7737,-73.870721     40.757007,-73.971953")

X <- as.data.frame(lapply(X, function(x) sapply(as.character(x), function(y) URLencode(y, T) ) ), stringsAsFactors = F)
rownames(X) <- NULL

res <- mapdist(from= X$pickup, 
    to = X$dropoff, 
    mode = "driving" ,
    output = "simple", messaging = FALSE, sensor = FALSE,
    language = "en-EN", override_limit = FALSE)
cbind(X, res)
#                  pickup                dropoff                  from                     to     m     km    miles seconds minutes     hours
# 1 40.77419%2C-73.872608  40.78055%2C-73.955042 40.77419%2C-73.872608  40.78055%2C-73.955042 12805 12.805 7.957027    1212   20.20 0.3366667
# 2  40.7737%2C-73.870721 40.757007%2C-73.971953  40.7737%2C-73.870721 40.757007%2C-73.971953 14038 14.038 8.723213    1437   23.95 0.3991667

您的列可能属于factor类型(请与str(X)核对)。 mapdist需要character个向量(请检查?mapdist)。因此,您必须事先使用as.character转换列。此外,当使用地理坐标时,我认为你必须对它们进行URL编码。即逗号,变为%2C。否则它对我不起作用......