带有两个输入,构建模型和输出结果的闪亮应用程序

时间:2016-10-21 07:40:03

标签: r shiny

我想输入categorynumber来构建模型,以按不同类别中的销售排名来预测每日销售额。第一个输入是将我的数据子集化为构建模型,第二个输入是作为模型输入的等级。最后,输出是从模型预测为每日销售。

这是我的ui.r和server.r

library(shiny)
shinyUI(fluidPage(

titlePanel("Daily Sales Prediction by Sales Rank "),

selectInput("select", label = h3("Select Category"), 
          choices = list("toy_display_on_website" = 1, "toy_display_on_website" = 2, "toy_display_on_website" = 3), 
          selected = 1),

hr(),
#fluidRow(column(3, verbatimTextOutput("value"))),

  numericInput("num", label = h3("Sales Rank "), value ="100"),
  hr(),
  fluidRow(column(3, verbatimTextOutput("value")))
))

(在server.r中,我获得了一个带有col名称的数据帧'juvo'     'asin''AvgQuantity''AvgRank1''Catgory1')

shinyServer(function(input, output) {

juvosub<-reactive({juvo[juvo$Catgory1==input$select,]})
m1 <- reactive({glm.nb(as.formula(paste(log10(as.numeric(juvosub()$AvgQuantity))," ~ ",paste(log10(as.numeric(juvosub()$AvgQuantity)),collapse="+"))), 
                     data = juvosub())})
juvoPredict<-reactive({data.frame(AvgRank1=input$num)})
result<-reactive({predict(m1(),juvoPredict(),type = "response") })
output$value <- renderPrint({result()})

})

如上所述,我想通过输入$ select对juvo数据框进行子集化,然后通过'AvgQuantity'~'AvgRank1'构建模型。使用内置模型,输入$ num是排名,我想将数量作为输出。

但错误消息是“模型公式中的无效术语”或“不能强制类”“反应值”“到data.frame”谢谢。

1 个答案:

答案 0 :(得分:0)

您能提供示例数据集吗?否则很难回答你的问题。

话虽这么说,你应该阅读更多关于如何使用反应式表达式(它们是函数,而不是对象)。您尝试将反应式表达式传递给模型的data参数和object的{​​{1}}参数,这可能是您的第一个错误。同样,第二个错误也可能是因为为predict()参数提供了一个反应式表达而不是值。