我编写了一个函数,该函数将从 Google Maps API 中提取地理空间数据,并使用 googleway 函数“google_places”将 1) 名称 2) 坐标存储在数据框中。
Google_places 使用“下一页令牌”进行一次完整搜索的总共 3 次 API 调用。
当从函数中拉出时,此代码运行良好并返回一个 60 行数据帧。
但是,当我使用适当的参数运行此函数时,它会返回一个只有 40 个结果的数据框。
我已经在我的代码中明确地运行了所有三个必要的调用,而不仅仅是两个。
我不确定为什么这段代码可以在函数之外工作,但不能在函数内部工作。
有谁知道这里发生了什么?
同样,这是使用 googleway google_places 功能。https://rdrr.io/cran/googleway/man/google_places.html
谢谢!这是代码:
一世。首先设置搜索中使用的条件
search_string <- "Urgent care center"
key <- key #my API key
radius <- 50000
location <- L1
#L1 is a numeric vector of coordinates [1] 39 -105
search <- google_places(search_string, key, location, radius)
ii. 通过从一个搜索调用创建数据框来初始化搜索的函数(总共有三个搜索调用)。
thin_df <- function(search){
a <- search$results$name
b <- search$results$geometry$location$lat
c <- search$results$geometry$location$lng
thin_df <- data.frame(a, b, c)
return(thin_df)}
iii. 在这个函数中,一个'central df'结合了三个'thin df'调用结果,使用之前定义的参数和thin_df函数创建了一个对第一个坐标对的完整搜索。
full_search <- function(search_string,
key, location, radius){
call_1 <- google_places(search_string,
key,
location,
radius)
thin1 <- thin_df(call_1)
call_2 <- google_places(search_string = search_string,
page_token = call_1$next_page_token,
key = key,
location = location,
radius = radius)
thin2 <- thin_df(call_2)
full_df <- rbind(thin1, thin2)
call_3 <- google_places(search_string,
page_token = call_2$next_page_token,
key,
location,
radius)
thin3 <- thin_df(call_3)
central_df <- rbind(full_df, thin3)
return(central_df)
}
central_df <- full_search(("Urgent care center", key, L1, 50000)