2013-07-06 66 views
1

我的问题是如以下详述:在FOR循环中使用revgeocode函数。帮助需要

我的输入数据的格式为如下面的小例子给出:

USERID LONGITUDE LATITUDE 
1   -8.79659   55.879554 
2   -6.874743   56.87896 
3   -3.874743   58.87896 
4   -10.874743   80.87896 

我已经使用了follwoing码反向地理编码的latitiude和经度

dset <- as.data.frame(dataset[,2:3]) 
dset <- na.omit(dset) 

library (ggmap) 
location <- dset 
nrow(location) 

locaddr <- matrix(0,nrow(location),1) 
location <- as.matrix(location) 
for (i in 1:nrow(location)) 
{ 


    locaddr[i,] <- revgeocode(location[i,], output = c("address"), messaging = FALSE, sensor = FALSE, override_limit = FALSE) 



} 

现在某些经度 - 纬度从Google Maps API返回NA。但是,当这种情况发生时,for循环因某种原因被终止。我想绕过这一点,并继续处理剩下的数据点。我有一个想法是以下伪代码:

if i = nrow(location) 
continue 
else 
repeat revgeocode for loop here 
end-for 
end-if. 

请告知如何可以做到这一点,或者如果有更好的方法来做到这一点。

预先感谢您的时间和帮助。

回答

1

这里不需要使用for-loop。我推荐你使用lapply避免副作用,并预分配问题:

locaddr <- lapply(seq(nrow(location)), function(i){ 
      revgeocode(location[i,], 
         output = c("address"), 
         messaging = FALSE, 
         sensor = FALSE, 
         override_limit = FALSE) 
       }) 
+0

非常感谢您的回答...我会实现它并对它进行测试。我是R新手,并且非常感谢您的指导。 – Manus