R-矢量化JSON调用

R-矢量化JSON调用,json,r,ggplot2,Json,R,Ggplot2,使用Mapquest directions API在R中使用ggplot2绘制数千条路线 基本代码理论:有一个结束位置列表和一个开始位置列表。对于每个终端位置,对fromJSON的调用从Mapquest返回路由坐标。在此基础上,我们已经将坐标分配(在列表中读取为列表)矢量化到ggplot2的geom_路径geom 现在,在约1200条记录的位置集上运行此操作需要约4分钟。我很想把它弄下来。关于如何矢量化对fromJSON(返回列表)的调用有何想法 Windows 7,64位,R2.14.2 库:

使用Mapquest directions API在R中使用ggplot2绘制数千条路线

基本代码理论:有一个结束位置列表和一个开始位置列表。对于每个终端位置,对fromJSON的调用从Mapquest返回路由坐标。在此基础上,我们已经将坐标分配(在列表中读取为列表)矢量化到ggplot2的geom_路径geom

现在,在约1200条记录的位置集上运行此操作需要约4分钟。我很想把它弄下来。关于如何矢量化对fromJSON(返回列表)的调用有何想法

Windows 7,64位,R2.14.2

库:plyr、ggplot2、rjson、mapproj、XML

k = 0
start_loc        = "263+NORTH+CENTER+ST.,+MESA+ARIZ."
end_loc          = funder_trunc[,length(funder_trunc)]
route_urls       = paste(mapquest_baseurl, "&from=", start_loc, "&to=", end_loc, "&ambiguities=ignore", sep="")

for (n in route_urls) {

route_legs       = fromJSON(file = url(n))$route$legs[[1]]$maneuvers  
lats             = unlist(lapply(route_legs, function(x) return(x$startPoint[[2]])))
lngs             = unlist(lapply(route_legs, function(x) return(x$startPoint[[1]])))
frame            = data.frame(cbind(lngs, lats))
path_added       = geom_path(aes(lngs, lats), data = frame)
p                = p + path_added
k = k + 1
print(paste("Processed ", k, " of ", nrow(funder_trunc), " records in set.", sep=""))

}

因为我没有使用
rjson
mapproj
,所以我在这里冒险,但似乎给服务器打了几千次电话才是真正的罪魁祸首。如果mapquest服务器没有允许您一次性发送多个请求的API,那么您就有麻烦了。如果有,那么您需要了解如何使用/修改
rjson
和/或
mapproj
来调用它

正如@Chase所说,您可能可以并行调用它,但服务器不喜欢从同一个客户机获得太多并行请求——它可能会禁止您。顺便说一句,它甚至可能不喜欢从同一个客户端快速连续地收到数千个串行请求,但显然您当前的代码工作正常,所以我想它不介意。

库(并行)
和合适的后端?