我想输入category
和number
来构建模型,以按不同类别中的销售排名来预测每日销售额。第一个输入是将我的数据子集化为构建模型,第二个输入是作为模型输入的等级。最后,输出是从模型预测为每日销售。
这是我的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”谢谢。
答案 0 :(得分:0)
您能提供示例数据集吗?否则很难回答你的问题。
话虽这么说,你应该阅读更多关于如何使用反应式表达式(它们是函数,而不是对象)。您尝试将反应式表达式传递给模型的data
参数和object
的{{1}}参数,这可能是您的第一个错误。同样,第二个错误也可能是因为为predict()
参数提供了一个反应式表达而不是值。