Создание загружаемых отчетов на основе пользовательских данных в R - PullRequest
0 голосов
/ 04 сентября 2018

Я столкнулся с этим создателем пользовательских отчетов в блестящем приложении Stackoverflow Link

Я хочу создать нечто подобное, но вместо константы «y» в ggplot (в данном случае «mpg»); мои графики будут созданы на основе значений из разных фреймов данных

В выпадающем списке будут только имена переменных, назначенные этим графикам, и после выбора переменной и нажатия кнопки действия графики будут заполняться один под другим или в виде сетки

Мне трудно найти способ сделать это

Моя предыдущая попытка была такой же, как в ссылке Предыдущий код:

library(shiny)

server <- shinyServer(function(input, output, session) {
  output$files <- renderTable(input$files)

  files <- reactive({
    files <- input$files
    files$datapath <- gsub("\\\\", "/", files$datapath)
    files
  })


  output$images <- renderUI({
    if(is.null(input$files)) return(NULL)
    image_output_list <- 
      lapply(1:nrow(files()),
             function(i)
             {
               imagename = paste0("image", i)
               imageOutput(imagename, width = "50%", height = "600px")
             })

    do.call(tagList, image_output_list)
  })
  observeEvent(input$UploadCharts, {
    toggleModal(session, "boxPopUp1", toggle = "toggle")
  })
  observe({
    if(is.null(input$files)) return(NULL)
    for (i in 1:nrow(files()))
    {
      print(i)
      local({
        my_i <- i
        imagename = paste0("image", my_i)
        print(imagename)
        output[[imagename]] <- 
          renderImage({
            list(src = files()$datapath[my_i],
                 alt = "Image failed to render")
          }, deleteFile = FALSE)
      })
    }
  })

})

ui <- shinyUI(fluidPage(
  titlePanel("Report Creator"),
  actionButton("UploadCharts", "Upload Charts"),
  tags$head(tags$style("#boxPopUp1 .modal-dialog{ width:1000px}")),
  bsModal("boxPopUp1", "UploadCharts", "Change name",

  sidebarLayout(
    sidebarPanel(

      fileInput(inputId = 'files', 
                label = 'Select an Image',
                multiple = TRUE,
                accept=c('image/png', 'image/jpeg'))
    ),
    mainPanel(
      tableOutput('files'),
      width = 10,
      uiOutput('images'))
    )
  )
))

shinyApp(ui=ui,server=server)

Мне кажется, что предыдущий метод был бы гораздо более подходящим для вывода, который я хочу для своего отчета

...