#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
аргументу.