В последнее время я пытаюсь создать интерактивное блестящее приложение. В этом приложении я хочу, чтобы линейная модель предсказывала данное значение пользователем. Кроме того, предиктор и пояснительная переменная могут быть выбраны пользователем. После этого модель просто возвращает прогнозируемое значение, отображаемое приложением. Однако я не могу понять, как позволить приложению использовать существующий фрейм данных и возвращать прогнозируемое значение. При запуске приложения я получаю следующую ошибку:
Warning in storage.mode(v) <- "double" : NAs introduced by coercion
Warning: Error in contrasts<-: contrasts can be applied only to factors with 2 or more levels
[No stack trace available]
Сам скрипт похож на код Шона Кросса (https://seankross.com/developing-data-products/shiny.html#reactivity). Я использовал скрипт, представленный ниже, что привело к ошибке:
librar(shiny)
#Create random data frame with three vectors
df <- data.frame(V1=1:100, V2=100:1*runif(100, min=0, max=1), V3=1:100*runif(100, min=0, max=1))
ui <- fluidPage(
headerPanel("Regression"),
sidebarPanel(
p("Select explanatory variable"),
selectInput(inputId = "ExpVar", label = "Explanatory variable", choices = colnames(df)),
p("Select predictor variable"),
selectInput(inputId = "PreVar", label = "Predictor variable", choices = colnames(df)),
numericInput(inputId = "Pred", label = "Predict chosen value", value = 10),
h3("Prediction"),
textOutput("prediction")))
server <- function(input, output){
modpred <- reactive({
Pre <- input$Pred
Pname <- input$PreVar
mod <- lm(input$PreVar~input$ExpVar, data=df)
predict(mod, newdata = data.frame(Pname = Pre))})
output$prediction <- renderText({modpred()})
}
shinyApp(ui, server)
Заранее спасибо за ваше время