【问题标题】:Shiny app with two inputs, build model, and output result具有两个输入、构建模型和输出结果的闪亮应用
【发布时间】:2017-03-03 10:19:45
【问题描述】:

我想输入一个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()})

})

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

但错误消息是“模型公式中的无效术语”或“无法将类“reactivevalues”强制转换为 data.frame”谢谢。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

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

    话虽如此,您应该阅读更多关于如何使用反应式表达式(它们是函数,而不是对象)的信息。您正在尝试将反应式表达式传递给模型的 data 参数和 predict()object 参数,这可能是您的第一个错误。同样,第二个错误也可能是由于为您的 data.frame 参数提供了反应式表达式而不是值。

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      相关资源
      最近更新 更多