根据R中的用户输入创建可下载的报告

时间:2018-09-04 17:54:04

标签: r ggplot2 shiny shinydashboard

我在闪亮的App中遇到了这个用户定义的报表创建者 Stackoverflow Link

我想创建类似的东西,但不要在ggplot中将“ y”作为常量(在本例中为“ mpg”);我的绘图将根据不同数据框中的值创建

在下拉框中,将只为这些图分配变量名称,选择变量并按下操作按钮后,将在一个图的下方,另一个或以网格的方式填充图

我很难找到一种方法

我以前的尝试是在link中 先前的代码:

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)

我觉得前一种方法更适合我要为报告生成的输出

0 个答案:

没有答案