Проблема передачи имен переменных через selectInput () в R / Shiny - PullRequest
0 голосов
/ 22 декабря 2018

Я создаю shinyapp, где передаю имена переменных в качестве аргументов на сервер с помощью виджета selectInput ().Следующий статический пример иллюстрирует график, который я хочу отобразить:

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

Просто для ясности, вот изображение вышеупомянутого графика

Что я хочу сделатьсделать в моем 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)

Фактический вывод, который я получаю, отличается от статического примера Я начал с (нажмите для просмотра изображения).

Может кто-нибудь, пожалуйстауказать на мою ошибку?Благодарен за помощь.

1 Ответ

0 голосов
/ 22 декабря 2018

input$var - это строка.Поэтому делай

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