2017-11-15 4 views
-1

私は、データに応じてさまざまな数のプロットをレンダリングしたいと考えています。 uiのデータにアクセスして、データに基づいて複数のplotOutputコールを動的に生成できますか?私は、サーバーでできるよう(Shiny R)UIで複数の出力を動的に生成する方法は?

shinyApp(
    ui <- fluidPage(
    lapply(WHAT I WANT TO ACCESS, function(patient) { 
     fluidRow(column(1, tags$p(patient)), 
       column(11, lapply(unique(newDT[pat == patient]$clinic), 
        function(clinic){ 
        fluidRow(column(1, tags$p(clinic)), 
          column(10, plotOutput(outputId = paste(patient, clinic), height = "100%"))) 
        }))) 

    }) 
), 

    server <- function(input, output) { 

    newDT2 <- reactive({ 
     newDT[dx.x == input$dx] 
    }) 

    #WHAT I WANT TO ACCESS IN UI 
    pats <- unique(newDT2()$pat) 

    x <-reactive({max(newDT2()$dat) +0.5}) 
    #observe({print(x())}) 

    PLOT 
    }) 
     } 
    }) 
    } 
    } 
) 

は、しかし、私はUIでデータフレームをアクセスすることはできません:たとえば

は、我々はこのコードを持っている場合。解決策はありますか?

TIA!

答えて

0

serverのデータをすべて処理し、出力をuiに戻す必要があります。あなたの例では

、あなたはrenderUI呼び出しでサーバーにlapply電話をかけるとuiにその場所にuiOutputを置きます。

これは、私の光沢のあるアプリの例です。サーバーで

# dynamically creates a numeric input for each activity in the activities table 
    # for the PAL helper panel 
    output$activityList <- renderUI({ 
     act <- split(as.character(activities[order(activities$Sort, activities$Activity), 
              "Activity"]), 
        cut2(1:nrow(activities), g=3)) 
     div(class = "sidebyside", 
      fluidRow(column(4,lapply(as.character(act[[1]]), 
          function(x) {numericInput(x,x, value = 0, step=0.5, min = 0)})), 
        column(4,lapply(as.character(act[[2]]), 
          function(x) {numericInput(x,x, value = 0, step=0.5, min = 0)})), 
        column(4,lapply(as.character(act[[3]]), 
          function(x) {numericInput(x,x, value = 0, step=0.5, min = 0)})) 
        ) 
     ) 

}) 

とUIで:

uiOutput("activityList") 
関連する問題