Parker Novak
Parker Novak

Reputation: 31

Using googleway google_places to make simple dataframe

When using the function google_places, the location argument is a vector of coordinate pairs. However, within this function I wrote, an error is returned:

Error in validateGeocodeLocation(location) : 
location must be a vector of a pair of latitude and longitude coordinates

This is the simple command that WORKS outside my function. I use c(39, -105).

search <- google_places(search_string = "Urgent care center", key = key, location = c(39, -105), radius = 50000)

This is the function I wrote that will return the error:

 full_search <- function(search_string, 
                    key, location, radius){
 call_1 <- google_places(search_string, 
                      key, 
                      location, 
                      radius)
 thin1 <- thin_df(call_1)
 return(thin1)}

 full_search("Urgent care center", key, c(39, -105), 50000)

Here, thin_df is a function I wrote which runs smoothly and returns the desired dataframe:

thin_df(search)
                                        name      lat       lon
1  UCHealth Urgent Care - Garden of the Gods 38.89643 -104.8416
2       UCHealth Urgent Care - Circle Square 38.79420 -104.7879
3              Penrose Community Urgent Care 38.87440 -104.7936
4              UCHealth Urgent Care - Powers 38.89424 -104.7211
5                   Emergicare Austin Bluffs 38.89066 -104.7548
6     UCHealth Urgent Care - Voyager Parkway 39.02628 -104.8166
7                    QwikCare MD Urgent Care 38.89746 -104.8274
8                       Woodmen Medical Park 38.94013 -104.7504
9        Centura Health Urgent Care Fountain 38.71720 -104.7009
10               AFC Urgent Care Castle Rock 39.41698 -104.8799
11                 Powers Pointe Urgent Care 38.89393 -104.7234
12        UCHealth Urgent Care - Castle Rock 39.40604 -104.8559
13             QwikCareMD Urgent Care Center 38.91051 -104.7207
14      Centura Health Urgent Care Broadmoor 38.79425 -104.8042
15                         Optum Urgent Care 38.87492 -104.7956
16            Wik Care Md Urgent Care Center 38.76717 -104.8158
17        Colorado Urgent Care Associates PC 38.87430 -104.7937
18                              Urgent CareX 38.85588 -104.7937
19                        Falcon Urgent Care 38.93956 -104.6041
20                         Optum Urgent Care 39.06502 -104.8481

Why could this possibly be happening if the error references the location argument, which works outside the function with no change?

Thank you!

Upvotes: 0

Views: 120

Answers (1)

SymbolixAU
SymbolixAU

Reputation: 26258

You've mixed up the argument order in the google_places() function.

This is the function definition

google_places (search_string = NULL, location = NULL, radius = NULL, 
    rankby = NULL, keyword = NULL, language = NULL, name = NULL, 
    place_type = NULL, price_range = NULL, open_now = NULL, page_token = NULL, 
    simplify = TRUE, curl_proxy = NULL, key = get_api_key("places"), 
    radar = NULL) 

Notice location is the 2nd argument, but in your full_search function you're supplying the key to the 2nd argument.


I would always recommend explicitely stating the argument when you call functions


library(googleway)
key <- secret::get_secret("GOOGLE")

full_search <- function(search_string, 
                        key, location, radius){
  
  call_1 <- google_places(search_string = search_string, 
                          key = key, 
                          location = location, 
                          radius = radius)
  return(call_1)
  # thin1 <- thin_df(call_1)
  # return(thin1)
  }

full_search("Urgent care center", key, c(39, -105), 50000)

Upvotes: 1

Related Questions