我正在尝试为ShinyApp编写代码,在其中选择一个响应变量(仅一个选择框),然后在复选框中选择所需的所有协变量。此外,我想指定我的响应变量的分布族(高斯,泊松,二项式等)。我不知道在主面板和服务器中写什么。有人可以帮我吗?
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)),
mainPanel(
)
)
)
server<-function(input,output){
}
shinyApp(ui, server)
答案 0 :(得分:0)
也许这个小例子可以帮助您。
如果要动态创建公式,则必须将其包装到reformulate
或as.formula
中。
此shinyApp示例打印出线性回归的摘要并根据该模型绘制预测:
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)