来自用户加载数据的闪亮图

Shiny plots from user loaded data

我正在构建一个 shinydashboard,我想让用户能够加载 excel 文件,然后生成绘图和其他输出项。我 运行 遇到的问题是我可以加载数据:

ui <- dashboardPage(
       dashboardBody(
        tabItems(
    tabItem(tabName = "data_file",
            fluidPage(
              titlePanel("Upload_Data_File"),
              sidebarLayout(
                sidebarPanel(
                  fileInput('file1', 'Choose xlsx file',
                            multiple = TRUE,
                            accept = c(".xlsx"))
                ),
                mainPanel(
                  tableOutput('contents'))
              ),
            DT::dataTableOutput("sample_table"))
    ))))

server <- function(input, output) {
df_products_upload <- reactive({

inFile <- input$file1

if(is.null(inFile))
  return(NULL)
file.rename(inFile$datapath,
            paste(inFile$datapath, ".xlsx", sep=""))
read_excel(paste(inFile$datapath, ".xlsx", sep=""), 1)
})

output$sample_table <- DT::renderDataTable({
df <- df_products_upload()
DT::datatable(df)
})
shinyApp(ui = ui, server = server)

如果我想对此数据框进行一些分析,我可以在服务器选项中执行此操作:

output$plot <- renderPlot({
  data <- df_products_upload() ........ #Some Analysis
  data2, data3.... # Items generated during analysis 
  plot(data2)})

然后完成输出函数内部的分析并创建最终将在调用中使用的额外数据帧。但是,如果我想创建将在仪表板中生成的多个输出图,是否有更好的效率来允许分析 运行 以便可以通过这种方式生成未来的输出图?

 output$plot2 <- renderPlot({
     plot(data3) })

目前我只能通过重复分析服务器中的所有输出来让它工作,这是非常低效的。

 output$plot2 <- renderPlot({
   data <- df_products_upload() ........ #Some Analysis
   data2, data3.... # Items generated during analysis 
   plot(data3)})

谢谢!

看来你需要的是

data<-reactive({
    data <- df_products_upload() ........ #Some Analysis
    data #data should be a vector, list or whatever containg all the itmes
    })

然后

output$plot <- renderPlot({
 plot(data()[1]) 
})

output$plot2 <- renderPlot({
 plot(data()[2]) 
})