如何从ShinyApp上的多个对象列表中渲染绘图

时间:2017-11-08 13:27:52

标签: r list plot render shiny

我有一个函数Identify_IP(),它返回1-数据帧的列表 2 ggplot。我需要在ShinyApp中使用renderTable和renderPlot。此shinyApp代码仅呈现数据帧。但我无法渲染情节。有帮助吗?

library(shiny)

source('InflectionP2.R', local = TRUE)

runApp(
  list(
    ui = fluidPage(
      titlePanel("Upload your file"),
      sidebarLayout(
        sidebarPanel(
          fileInput('file1', 'Choose xls file',
                    accept = c(".XLS")),

          actionButton("btn", "Update Table"),
          actionButton("btn1", "Display Plot"),

          downloadButton('downloadData', 'Download')
        ),

      mainPanel(
        tableOutput('what'),
        plotOutput('pl'))
    )
    )
    ,

    server = function(input, output, session){

      dataOP <- reactive({
    inFile <- input$file1
    if (is.null(input$file1))
      return(NULL)

  Identify_IP(read.table(inFile$datapath))
  list(tble = df1, txt = inflection_points, plt = p )
  })


  observeEvent(input$btn, output$what <- renderTable({dataOP()$tble}))

  observeEvent(input$btn1, output$pl <- renderPlot({
    plot(dataOP()$plt)
  }))              
     }
      ))

1 个答案:

答案 0 :(得分:0)

使用以下server为我工作:

server = function(input, output, session){

    dataOP <- reactive({
        inFile <- input$file1
        if(is.null(input$file1)){
            return(NULL)
        }
        #Identify_IP(read.table(inFile$datapath))
        list(tble = c(1:20), txt = c(1:10), plt = rnorm(100))
    })

    observeEvent(input$btn,{
        output$what <- renderTable({
            dataOP()$tble
        })
    })

    observeEvent(input$btn1,{
        output$pl <- renderPlot({
            plot(dataOP()$plt)
        })
    })              
}

请注意,我注释了您的函数Identify_IP并将结果替换为任意值。 如果这仍然不起作用,您的问题可能分别与此函数或函数返回的值有关。