R 如何通过两个步骤使用用户选择的变量

R 如何通过两个步骤使用用户选择的变量,r,shiny,R,Shiny,我在这里包括可复制的例子。我希望用户选择一个变量,该变量将作为参数通过函数传递给group_。然后我要绘制聚合数据。虽然我能够在稍后计算聚合时找到如何引用用户输入,但当我想引用图表中的同一变量时,我不知道如何做。在我的例子中,我需要找到占位符XXXXXXXXXX的正确答案,或者找到不同的解决方案 library(shiny) ui <- fluidPage( selectInput("first","Select variable",c("cyl","gear")),

我在这里包括可复制的例子。我希望用户选择一个变量,该变量将作为参数通过函数传递给group_。然后我要绘制聚合数据。虽然我能够在稍后计算聚合时找到如何引用用户输入,但当我想引用图表中的同一变量时,我不知道如何做。在我的例子中,我需要找到占位符XXXXXXXXXX的正确答案,或者找到不同的解决方案

library(shiny)

ui <- fluidPage(



      selectInput("first","Select variable",c("cyl","gear")),




    plotOutput("distPlot")

)


server <- function(input, output) {


  data<-reactive({
  mtcars%>%group_by(!!input$first)%>%summarise(average=mean())
  })



  output$distPlot <- renderPlot({

    ggplot(data(),aes(XXXXXXXXXXXXXX,average))+
      geom_bar(stat = 'identity')
  })
}

shinyApp(ui, server)```


库(闪亮)

ui当您在
group\u by
函数和ggplot的
aes
函数中引用输入$first时,您必须写入
!!sym(输入$first)


哪一个变量要取
平均值
?您只是在指定
mean()
刚刚添加了一个闪亮的应用程序,它演示了为什么原始方法不能产生预期的结果
library(shiny)
library(ggplot2)

ui <- fluidPage(
  selectInput("first","Select variable",c("cyl","gear")),
  plotOutput("distPlot"),
)

server <- function(input, output) {

  data<-reactive({
    mtcars%>% 
      group_by(!!sym(input$first)) %>%
      summarise(average=mean(mpg))
  })

  output$distPlot <- renderPlot({
    ggplot(data(),aes(x=!!sym(input$first),y=average)) + 
      geom_bar(stat = 'identity')
  })
}

shinyApp(ui, server)
library(shiny)
library(ggplot2)

ui <- fluidPage(
  selectInput("first","Select variable",c("cyl","gear")),
  tableOutput("wrong"),
  tableOutput("correct")
)

server <- function(input, output) {

  output$wrong <- renderTable({
    mtcars%>% 
      group_by(!!input$first) %>%
      summarise(average=mean(mpg))
  })

  output$correct <- renderTable({
    mtcars%>% 
      group_by(!!sym(input$first)) %>%
      summarise(average=mean(mpg))
  })

}

shinyApp(ui, server)