首页 > 解决方案 > R Shiny 中具有动态输入的方差分析表

问题描述

我正在尝试制作一个 Shiny 应用程序,该应用程序根据来自iris数据集的动态数值变量输入输出 ANOVA 表。

这是我苦苦挣扎的部分: aov.model <- aov(input$varNames ~ iris$Species, data = iris)

如果我将动态输入部分替换为任何指定的变量名称,则上述方法有效:

aov.model <- aov(Sepal.Length ~ Species, data = iris)

我应该如何处理动态输入部分input$varNames

这是完整的工作代码:

ui <- fluidPage(
  tabsetPanel(
    tabPanel("ANOVA",
             uiOutput("varNames"),
             verbatimTextOutput("anovaTable")
    )
  )
)

# @
server <- function(input, output) {
  output$varNames <- renderUI({
    selectizeInput("varNames2",
                   "Variables: ",
                   choices = names(iris[, -5])
    )
  })
  
  output$anovaTable <- renderPrint({
    aov.model <- aov(input$varNames ~ iris$Species, data = iris) # Stuck here
    print(aov.model)
    br()
    br()
    print(summary(aov.model))
    cat("Coefficients"); cat("\n")
    print(aov.model$coefficients)
  }) 
}

shinyApp(ui, server)

标签: shiny

解决方案


你没有varNames。应该是input$varNames2。此外,您应该将其称为

aov.model <- aov(iris[[input$varNames2]] ~ iris$Species, data = iris)

然后你得到以下输出:

输出


推荐阅读