Построение кругового символа с использованием ggplot2 в блестящем с вводом $ variables

#r #ggplot2 #shiny #pie-chart

#r #ggplot2 #блестящий #круговая диаграмма

Вопрос:

Я создаю блестящее приложение, которое помогает пользователю самостоятельно создавать круговые диаграммы с помощью ggplot2. Следовательно, у него будет селекторный ввод, позволяющий пользователю выбирать переменные из разных фреймов данных. Я застрял с input$ утверждениями, казалось, что Shiny взял символ input$ в двойных кавычках в качестве символа, а не переменной. Ниже приведена упрощенная версия кода, пожалуйста, дайте мне знать, как это исправить. Заранее спасибо!

 library(ggplot2)

server <- function(input, output) {

  output$var_selector <- renderUI({
    selectInput('var_selector', 'Please select:', choices = names(mtcars))
  })

  output$pie_plot <- renderPlot({
    ggplot(mtcars, aes(x = factor(1), fill = factor(input$var_selector)))   geom_bar(width = 1)   coord_polar(theta = "y")
  })

  output$text <- renderText({
    print(input$var_selector)
  })

}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      h3('ggplot2 pie chart'),
      uiOutput('var_selector')
    ),
    mainPanel(
      plotOutput('pie_plot')
    )
  )
)

shinyApp(ui = ui, server = server)
  

Комментарии:

1. Вы проверили choices = names(mtcars) , работает ли так, как ожидалось? Обычно choices ожидается именованный список.

2. И затем, если это работает так, как ожидалось, значение input$var_selector равно chr . Так что это в кавычках. ggplot::aes ожидаются переменные без кавычек. Итак, вы должны использовать aes_string здесь.

3. Привет @mRcSchwering, выбор работает так, как ожидалось. Я переключился aes на aes_string , но он все еще не работает.

4. О, из factor -за, вероятно. Вернитесь к aes и просто используйте mtcars[[input$var_selector]] вместо input$var_selector

5. Спасибо, это сработало!