Создайте URL с параметрами в R - PullRequest
0 голосов
/ 17 ноября 2018

Каков наилучший способ создания URL-адреса запроса с параметрами в R?До сих пор я придумал следующее:

library(magrittr)   
library(httr)
library(data.table)
url <- list(hostname = "geo.stat.fi/geoserver/vaestoalue/wfs",
            scheme = "https",
            query = list(service = "WFS",
                         version = "2.0.0",
                         request = "GetFeature",
                         typename = "vaestoalue:kunta_vaki2017",
                         outputFormat = "application/json")) %>% 
       setattr("class","url")
request <- build_url(url)

Что мне нравится в имеющемся у меня коде, так это то, что я могу легко изменять значения параметров и перестраивать URL.

Кроме того, полученный URL-адрес правильно закодирован в формате html:

https://geo.stat.fi/geoserver/vaestoalue/wfs/?service=WFS&version=2.0.0&request=GetFeature&typename=vaestoalue%3Akunta_vaki2017&outputFormat=application%2Fjson

Но загрузка библиотеки data.table, только для создания URL-адреса, просто не подходит.Есть ли лучше сделать это?

1 Ответ

0 голосов
/ 17 ноября 2018

Вам абсолютно не нужно data.table для создания URL.Как отметил Хосе, он был загружен для использования одной удобной функции, которую вы можете просто имитировать с помощью:

set_class <- function(o, v) { class(o) <- v ; invisible(o) }

Кроме того, если цель не состоит в том, чтобы иметь URL-адрес, а просто читать данные изсайт, вы также можете просто использовать httr глаголы:

httr::GET(
  url = "https://geo.stat.fi/geoserver/vaestoalue/wfs",
  query = list(
    service = "WFS",
    version = "2.0.0",
    request = "GetFeature",
    typename = "vaestoalue:kunta_vaki2017",
    outputFormat = "application/json"
  )
) -> res


dat <- httr::content(res)

str(dat, 1)
## List of 5
##  $ type         : chr "FeatureCollection"
##  $ totalFeatures: int 311
##  $ features     :List of 311
##  $ crs          :List of 2
##  $ bbox         :List of 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...