Использование «нового» в сантехнике - PullRequest
0 голосов
/ 14 января 2019

У меня есть простая функция в моем API сантехника, которая выглядит следующим образом:

library(methods)
library(plumber)

# Other functions...

#' @param elist The list of events to process as a string
#' @get /process
process_events <- function(elist=""){
  setClass("EventPattern", representation(sequence="character", probability="numeric", endProbs="data.frame"))

  q <- new("EventPattern", sequence=elist, probability=1, endProbs=data.frame(None=0))
  # Further code that should make use of q
}

Я запускаю Plumber (локально) и указываю на скрипт, содержащий api (выше), как:

r <- plumb('/path/to/script/forecast.R')
r$run(port=8000, swagger = TRUE)

И вызвать функцию по адресу (используя PostMan):

http://localhost:8000/process?elist="abcd"

Но я получаю «Исключение» с консолью R, которая говорит:

<simpleError: No method for S4 class:EventPattern>

Я понимаю, что ошибка предполагает, что требуется метод (универсальный), но когда я набираю:

q <- new("EventPattern", sequence=elist, probability=1, endProbs=data.frame(None=0))

локально на моей машине (в консоли R) работает нормально. Он подсказывает мне, что что-то не полностью загружено или недоступно для Сантехника, но я понятия не имею, как это исправить. Есть идеи?

1 Ответ

0 голосов
/ 14 января 2019

Я не использовал setClass и new раньше. Но я работал с сантехником в прошлом году. На вашем примере я обнаружил, что он пытается вернуть q и выдает ошибку из-за этого.

Добавление оператора печати, кажется, предотвращает ошибку:

library(methods)
library(plumber)

# Other functions...

#' @param elist The list of events to process as a string
#' @get /process
process_events <- function(elist=""){
  setClass("EventPattern", representation(sequence="character", probability="numeric", endProbs="data.frame"))

  q <- new("EventPattern", sequence=elist, probability=1, endProbs=data.frame(None=0))
  print("Not returning 'q'")
  # Further code that should make use of q
}

...