Может быть, вам поможет этот небольшой пример.
Если вы хотите динамически создать формулу, вам нужно обернуть ее в reformulate
или as.formula
.
.из резюме линейной регрессии и составляет прогноз на основе этой модели:
library(shiny)
library(plotly)
data(iris)
ui<-fluidPage(
titlePanel("Regression"),
sidebarPanel(
selectInput("var",label="Choose the response variable:",choice=names(iris), selectize=FALSE),
tags$hr(),
checkboxGroupInput(inputId ="ind_var", label = "Select at least two independent variables:", choices = names(iris), selected = "Species"),
mainPanel(
plotOutput("plot"),
verbatimTextOutput("summary")
)
)
)
server<-function(input,output){
lmR <- reactive({
req(input$var)
req(input$ind_var)
## Option 1 ---------------------
# formula = as.formula(paste(input$var, " ~ ", paste(input$ind_var, collapse= "+")))
# stats::lm(formula=formula, data=iris)
# browser()
## Option 2 ---------------------
stats::lm(formula=reformulate(input$ind_var, input$var), data=iris)
})
output$summary <- renderPrint(width="400", {
lmR()
})
output$plot <- renderPlot({
plot(predict(lmR()))
})
}
shinyApp(ui, server)