Блестящий реактивный сюжет провалился

У меня есть серия (более 100) сюжетов, которые я хотел бы отобразить в зависимости от того, какое преступление и год выбирает пользователь (реактивный)

Сюжеты уже названы в таком формате: «CrimeDataA01» для нападений в 2001 году, «CrimeDataM02» для убийства в 2002 году и т. Д.

Графики были определены, и код для них вставлен перед shinyServer (функция (ввод, вывод) в файле сервера.

Я пытаюсь заставить Shiny печатать правильный сюжет, в зависимости от того, какое преступление и год выбирает пользователь. Вот мой код server.r:

shinyServer(function(input, output) {
crime2 <- switch(input$select,
               "Assault" = "A",
               "Burglary" = "B",
               "Car Theft" = "MT",
               "Grand Larceny" = "G",
               "Murder" = "M",
               "Rape" = "R",
               "Robbery" = "RO")
year2 <- switch(input$Slider,
               "2000" = "00",
               "2001" = "01",
               "2002" = "02",
               "2003" = "03",
               "2004" = "04",
               "2005" = "05",
               "2006" = "06",
               "2007" = "07",
               "2008" = "08",
               "2009" = "09",
               "2010" = "10",
               "2011" = "11",
               "2012" = "12",
               "2013" = "13",
               "2014" = "14",
               "2015" = "15")
output$plot <- plot(paste0("CrimeData", crime2, year2))
  })
})

Вот мой код ui.R:

library(shiny)
shinyUI(fluidPage(
  sidebarLayout( position = "right",
sidebarPanel(
      selectInput("select", label = h3("Select Crime"),
              choices = list("Assault" = 1, "Burglary" = 2, "Car Theft" = 3, "Grand Larceny" = 4, "Murder" = 5, "Rape" = 6, "Robbery" = 7))
),
    mainPanel(
  textOutput("text1"),
  h1("NYC Crime Over Time", align = "center"),
  sliderInput("Slider", "Year", 2000, 2015, 2000),
print(plot)
  ))))

Я так много с этим напортачил, что больше не знаю, что там, а что нет. Я просто хочу, чтобы он называл правильный сюжет и отображал его


person DataScienceAmateur    schedule 29.01.2017    source источник
comment
Я попробую это сделать, как только вернусь домой. Если это сработает, запустите ваш Venmo   -  person DataScienceAmateur    schedule 29.01.2017
comment
Переименуйте output$plot в output$MyPlot и используйте renderImage() вместо plot(). затем измените print(plot) на plotOutput (MyPlot). См. Пример в ?renderImage   -  person Brandon Bertelsen    schedule 29.01.2017


Ответы (1)


Если я правильно понял вопрос, вы ищете следующий код: Обратите внимание, что я определил только CrimeDataA00 и CrimeDataA01, другие графики, которые вы, кажется, сохранили локально. В дополнение к предложению Брэндона изучить renderImage () или renderPlot () вам следует познакомиться с reactives () и get (). Удачи!

plot(1:9)
CrimeDataA00 <- recordPlot()

server <- shinyServer(function(input, output) {
  crime2 <- reactive({
    switch(input$select,
           "Assault" = "A",
           "Burglary" = "B",
           "Car Theft" = "MT",
           "Grand Larceny" = "G",
           "Murder" = "M",
           "Rape" = "R",
           "Robbery" = "RO")  
  })

  year2 <- reactive({
    switch(as.character(input$Slider),
           "2000" = "00",
           "2001" = "01",
           "2002" = "02",
           "2003" = "03",
           "2004" = "04",
           "2005" = "05",
           "2006" = "06",
           "2007" = "07",
           "2008" = "08",
           "2009" = "09",
           "2010" = "10",
           "2011" = "11",
           "2012" = "12",
           "2013" = "13",
           "2014" = "14",
           "2015" = "15")  
  })

  output$plot <- renderPlot({
    get(paste0("CrimeData", crime2(), year2()))
  })
})



library(shiny)
ui <- shinyUI(fluidPage(
  sidebarLayout( position = "right",
                 sidebarPanel(
                   selectInput("select", label = h3("Select Crime"),
                               choices = list("Assault" = "Assault", "Burglary" = "Burglary", "Burglary" = "Burglary", "Grand Larceny" = "Grand Larceny", "Murder" = "Murder", "Rape" = "Rape", "Robbery" = "Robbery"))
                 ),
                 mainPanel(
                   textOutput("text1"),
                   h1("NYC Crime Over Time", align = "center"),
                   sliderInput("Slider", "Year", 2000, 2015, 2000),
                   plotOutput("plot")
                 ))))

shinyApp(ui, server)
person Tonio Liebrand    schedule 29.01.2017
comment
Когда я запускаю это, он говорит о неожиданном конце ввода в 2015 = 15 - person DataScienceAmateur; 30.01.2017
comment
Я не могу воспроизвести эту ошибку. Я копирую приведенный выше код в пустой файл с пустой рабочей областью, и он работает. Может быть, очистите свое рабочее место и попробуйте еще раз. - person Tonio Liebrand; 30.01.2017
comment
если вам понравился ответ, я был бы признателен за голосование :) - person Tonio Liebrand; 10.06.2017