Как передать много данных сантехнику в R - PullRequest
0 голосов
/ 14 ноября 2018

Я бы хотел поиграть с библиотекой plumber, создав приложение, которое берет 14-дневные исторические данные и возвращает прогноз экспоненциального сглаживания.

Проблема в том, что я немного незнаком с передачей большого количества данных (параметр с несколькими значениями) в API. Мои вопросы можно обобщить следующим образом:

  1. Как подготовить данные в R для передачи в API?

  2. Как API должен быть подготовлен в plumber для получения данных временных рядов?

Ниже приведен пример данных и функции, которая выполняет то, что я хотел бы в R.

library(tidyverse)

# data to be passed to API
head(forecast::wineind,14)
#>        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov
#> 1980 15136 16733 20016 17708 18019 19227 22893 23739 21133 22591 26786
#> 1981 15028 17977                                                      
#>        Dec
#> 1980 29740
#> 1981

#* Return Forecast Data
#* @list a The first number
#* @get /simple_fcast
function(){
  ts() %>% 
  forecast::ets() %>% 
  forecast::forecast()
}
#> function(){
#>   ts() %>% 
#>   forecast::ets() %>% 
#>   forecast::forecast()
#> }

Создан в 2018-11-14 пакетом Представить (v0.2.1)

1 Ответ

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

Ответ заключается в том, чтобы использовать «тело сообщения» согласно документации здесь https://www.rplumber.io/docs/routing-and-input.html#

#' @post /user
function(req, id, name){
  list(
    id = id,
    name = name,
    raw = req$postBody
  )
}

Запуск curl --data "id=123&name=Jennifer" "http://localhost:8000/user" вернет:

{
  "id": [123],
  "name": ["Jennifer"],
  "raw": ["id=123&name=Jennifer"]
}

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

...