通过R / Shiny中的selectInput()传递变量名时出现问题

时间:2018-12-22 14:47:56

标签: r ggplot2 shiny selectinput

我正在构建一个闪亮的应用程序,其中我使用selectInput()小部件将变量名作为参数传递给服务器。以下静态示例说明了我要显示的图:

  g <- ggplot(d, aes(y, fill = var1, colour = var1)) + 
    geom_density(alpha=.2) 

请注意,这里是image of the above plot

我想在我的Shinyapp中做的是通过用户可以通过selectInput()选择的不同变量来分隔绘制的分布。但是,当我用通用参数替换上面的var1时,这不是我得到的。请参见示例:

library(ggplot2)
library(shiny)

d <- data.frame(var1=as.factor(sample(x = 1:4, size = 250, replace = TRUE)),
                var2=as.factor(sample(x = 1:4, size = 250, replace = TRUE)),
                y=rnorm(250, mean = 0, sd = 1))

nms <- names(d)

ui <- fluidPage(selectInput(inputId ="var", "Variable:",
                            choices = nms, selected = "var1"),
                plotOutput(outputId = "plot")
)

server <- function(input, output) {

  g <- ggplot(d, aes(y, fill = input$var, colour = input$var)) + 
    geom_density(alpha=.2) 


  output$plot <- renderPlot(g)

}

shinyApp(ui,server)

我得到的实际输出是 different from the static example我从(点击进入图片)开始。

有人可以指出我的错误吗?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

input$var是一个字符串。因此,

output$plot <- renderPlot({
  g <- ggplot(d, aes_string("y", fill = input$var, colour = input$var)) + 
         geom_density(alpha=.2)
  g
})