Ввод значения кадра df в веб-запрос функции GET

#r #purrr #httr

#r #purrr #httr

Вопрос:

Я пытаюсь ввести список значений из фрейма данных в мою функцию get для веб-запроса, а затем циклически выполнять каждую итерацию по ходу выполнения. Если кто-нибудь сможет связать меня с некоторыми дополнительными ресурсами для чтения и извлечения уроков из этого, это было бы оценено.

Ниже приведен код, который извлекает имена данных с сервера API. Я планирую использовать purrr итерационные функции для его просмотра. Входные данные из списка будут вставлены в имя переменной RFG_SELECT .

 library(httr)
library(purrr)

## Call up Query Development Script

## Calls up every single rainfall data gauge across the entirety of QLD

wmip_callup <- GET('https://water-monitoring.information.qld.gov.au/cgi/webservice.pl?{"function":"get_site_list","version":"1","params":{"site_list":"MERGE(GROUP(MGR_OFFICE_ALL,AYR),GROUP(MGR_OFFICE_ALL,BRISBANE),GROUP(MGR_OFFICE_ALL,BUNDABERG),GROUP(MGR_OFFICE_ALL,MACKAY),GROUP(MGR_OFFICE_ALL,MAREEBA),GROUP(MGR_OFFICE_ALL,ROCKHAMPTON),GROUP(MGR_OFFICE_ALL,SOUTH_JOHNSTONE),GROUP(MGR_OFFICE_ALL,TOOWOOMBA))"}}')

# Turns API server data into JSON data.

wmip_dataf <- content(wmip_callup, type = 'application/json')

# Returns the values of the rainfall gauge site names and is the directory function. 

list_var <- wmip_dataf[["_return"]][["sites"]]

# Combines all of the rainfall gauge data together in a list (could be used for giving file names / looping the data).

rfg_bind <- do.call(rbind.data.frame, list_var)

# Sets the column name of the combination data frame. 

rfg_bind <- setNames(rfg_bind, "Rainfall Gauge Name")                   

rfg_select <- rfg_bind$`Rainfall Gauge Name`

# Attempts to filter list into query:

wmip_input <- GET('https://water-monitoring.information.qld.gov.au/cgi/webservice.pl?{"function":"get_ts_traces","version":"1","params":{"site_list":**rfg_select**,"datasource":"AT","varfrom":"10","varto":"10","start_time":"0","end_time":"0","data_type":"mean","interval":"day","multiplier":"1"}}') ``` 


 

Ответ №1:

Привет всем,

После некоторой работы я нашел решение, используя объединенную строку.

Я настроил фиктивную переменную, которая помогла мне выбрать значение данных.

 # Dummy Variable string:

wmip_url <- 'https://water-monitoring.information.qld.gov.au/cgi/webservice.pl?{"function":"get_ts_traces","version":"1","params":{"site_list":"varinput","datasource":"AT","varfrom":"10","varto":"10","start_time":"0","end_time":"0","data_type":"mean","interval":"day","multiplier":"1"}}'


# Dummy String, grabs ones value from the list.

rfg_individual <- rfg_select[2:2]

# Replaces the specified input 
rfg_replace <- gsub("varinput", rfg_individual, wmip_url)

# Result 

"https://water-monitoring.information.qld.gov.au/cgi/webservice.pl?{"function":"get_ts_traces","version":"1","params":{"site_list":"001203A","datasource":"AT","varfrom":"10","varto":"10","start_time":"0","end_time":"0","data_type":"mean","interval":"day","multiplier":"1"}}"