Блестящее приложение с двумя входами, моделью сборки и выходным результатом

#r #shiny

#r #блестящий

Вопрос:

Я хотел бы ввести category и a 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 я получил фрейм данных ‘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()})

})
  

Как упоминалось, я хотел бы подмножить фрейм данных juvo с помощью ввода $ select, а затем построить модель с помощью ‘AvgQuantity’ ~ ‘AvgRank1’. В построенной модели ввод $ num — это ранг, и я хотел бы получить количество в качестве выходных данных.

Но сообщения об ошибках являются «недопустимым термином в формуле модели» или «не удается принудительно преобразовать класс «»reactivevalues»» в data.frame» Спасибо.

Ответ №1:

Можете ли вы предоставить пример набора данных? В противном случае очень сложно ответить на ваш вопрос.

При этом вам следует подробнее прочитать о том, как использовать реактивные выражения (которые являются функциями, а не объектами). Вы пытаетесь передать реактивное выражение в data аргумент вашей модели и object аргумент predict() , что, вероятно, является вашей первой ошибкой. Аналогично, вторая ошибка, вероятно, также является результатом предоставления реактивного выражения вместо значений вашему data.frame аргументу.