R - 通过划分数据集应用公式

R - Applying formula through partitioning a dataset

我需要使用 Bing 地图 API 来获取密码列表的坐标数据(印度)。我可以使用以下代码对小型数据集执行此操作:

get_lat_long <- function(pincodes) {
  # key: https://www.bingmapsportal.com/Application
  require(XML); require(data.table)
  PinCodeLatLong <- data.frame(pincode = "Temp", lat = "Lat", long = "Long")
  for(i in 1:length(pincodes)){ 
    var = pincodes[i] 
    link=paste0("http://dev.virtualearth.net/REST/v1/Locations?postalCode=",var,"&o=xml&maxResults=1&key=<mykey>") 
    #data<- xmlParse(link) 
    xml_data <- xmlToList(xmlParse(link)) 
    PinCodeLatLongtemp <- data.frame(pincode = "Temp", lat = "Lat", long = "Long") 
    PinCodeLatLongtemp$pincode <- var
    PinCodeLatLongtemp$lat <- xml_data$ResourceSets$ResourceSet$Resources$Location$Point$Latitude 
    PinCodeLatLongtemp$long <- xml_data$ResourceSets$ResourceSet$Resources$Location$Point$Longitude 
    PinCodeLatLong <- rbindlist(list(PinCodeLatLongtemp,PinCodeLatLong), fill = T) 
  }
  return(PinCodeLatLong)
}
master_lat_long <- get_lat_long(pincode_map$Pincode)
master_lat_long <- dplyr::filter(master_lat_long, !is.na(pincode))
master_lat_long <- master_lat_long[!duplicated(master_lat_long),]
pincode_map <- merge(pincode_map, master_lat_long, by.x="Pincode", by.y="pincode", all.y=FALSE)

但是,Bing Maps Basic API 一次只允许 2500 个数据点,我需要对大型数据集(100,000+)执行此操作。分区并将公式应用于文件 master_lat_long 的最佳方法是什么?有没有办法自动执行此操作?

您可以通过多种方式拆分每 2500 个值的数据。

ceiling 的一种方式是:

result <- by(pincode_map$Pincode, 
             ceiling(seq_len(nrow(pincode_map))/2500), get_lat_long)