2014-03-26 3 views
1

일부 데이터를 표시하기 위해 사용자의 renderTable을 표시합니다. 그러나 때로는 데이터 테이블이 비어있는 경우가 있는데 "표시 할 데이터가 없음"또는 비슷한 것을 인쇄하고 싶습니다. renderTable의 기본값은 빈 데이터에는 아무 것도 표시하지 않는 것입니다. 이것이 바뀔 수 있습니까? 방법?"empty data message"in renderTable

+0

과는 '아마 간단하지 –

+0

을 message'. 내 ui에 tableOutput()이 포함되어 있으면 테이블 (renderTable 또는 이와 비슷한 결과)이 필요합니다. 해당 ui 요소에 문자 메시지를 할당하려고하면 오류가 발생합니다. 감사합니다. – amit

답변

4

당신은 당신이 validate 기능과 같은 뭔가를 찾고 생각 (직접 테이블을 렌더링 할 수 없습니다)

datas <- data.frame() 

shiny::runApp(list(
    ui = pageWithSidebar(
    headerPanel("Example"), 
    sidebarPanel(
     selectInput("dataset", "Dataset", choices = c("iris", "datas")) 
    ), 
    mainPanel(
     uiOutput("ui") 
    ) 
), 
    server = function(input, output, session) { 

    datasetInput <- reactive({ 
     switch(input$dataset, 
      "iris" = iris, 
      "datas" = datas) 
    }) 

    output$ui <- renderUI({ 
     if(nrow(datasetInput()) == 0) 
     return("No data to show") 

     tableOutput("table") 
    }) 

    output$table <- renderTable({ 
     head(datasetInput()) 
    }) 
    } 
)) 
+0

. 나는 이것이 더 "프로그래밍"을 필요로하는 renderUI를 포함하고 UI와 로직 사이의 좋은 분리를 해칠 것이라고 생각했다. 이상적으로는 renderTable에 표시 할 데이터가 없을 때 수행해야 할 작업의 관점에서 유연성을 추가하는 추가 매개 변수가 필요합니다. 어쨌든 고마워. – amit

0

메시지 또는 "tableOutput"중 하나를 렌더링하는 renderUi에 조건을 사용할 수 있습니다. 줄리앙에서 제공

사용 예제 코드 :

datas <- data.frame() 

    shiny::runApp(list(

     ui = pageWithSidebar(

     headerPanel("Example"), 

     sidebarPanel(
      selectInput("dataset", "Dataset", choices = c("iris", "datas")) 
     ), 

     mainPanel(
      tableOutput('table') 
     ) 
    ), 

     server = function(input, output, session) { 

     datasetInput <- reactive({ 
      switch(input$dataset, 
       "iris" = iris, 
       "datas" = datas) 
     }) 


     output$table <- renderTable({ 
      y <- head(datasetInput()) 
       validate(
        need(nrow(y) > 0, "No Data to show") 
         ) 
     y 
     }) 

     } 

    )) 
`if` 문으로