首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Plumber中使用'new‘

在Plumber中使用'new‘
EN

Stack Overflow用户
提问于 2019-01-14 23:08:23
回答 1查看 105关注 0票数 0

我在我的Plumber API中有一个简单的函数,如下所示:

代码语言:javascript
复制
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的脚本(上面),如下所示:

代码语言:javascript
复制
r <- plumb('/path/to/script/forecast.R')
r$run(port=8000, swagger = TRUE)

并在地址上调用函数(使用PostMan):

代码语言:javascript
复制
http://localhost:8000/process?elist="abcd"

但我最终得到的是“发生了异常”,R控制台说:

代码语言:javascript
复制
<simpleError: No method for S4 class:EventPattern>

我意识到这个错误表明需要一个方法(泛型),但是当我键入:

代码语言:javascript
复制
q <- new("EventPattern", sequence=elist, probability=1, endProbs=data.frame(None=0))

在我的机器本地(在R控制台中),它工作得很好。它向我暗示,有些东西没有完全加载或可用于管道工,但我不知道如何修复它。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-14 23:59:11

我以前没有用过setClassnew。但我去年和水管工一起工作过。我发现在使用您的示例时,它试图返回q,并因此抛出错误。

添加一条print语句似乎可以防止出现错误:

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54184060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档