2017-10-19 7 views
4

다음은 간단한 예입니다. 테이블을보고 있다고 가정하고 Sepal.Length 열을 제외하고 테이블을 다운로드하려고합니다.R DT 패키지 파일을 다운로드하기위한 버튼에 디스플레이 테이블이 없습니다.

어떻게해야합니까? Sepal.Length 컬럼을 토글하고 엑셀을 클릭하려고 시도하지만 여전히 전체 데이터를 제공합니다. 나는 그것을 원하지 않는다. 내가 이걸 조작 할 수있는 방법이 있니?

백엔드에서 작동하는 방식에 익숙하지 않은 것 같습니다. 행 재정렬 확장 또는 검색/필터 테이블을 사용한 후 다운로드 한 파일이 테이블을 표시합니다. 그래서 열을 숨길 때 비슷한 것을 원합니다.

테이블에 너무 많은 열이 있고 때로는 이들 모두를 필요로하지 않을 때 유용합니다.

library(shiny) 
shinyApp(
    ui = fluidPage(DT::dataTableOutput('tbl')), 
    server = function(input, output) { 
    output$tbl = DT::renderDataTable(
     iris, extensions = "Buttons", 
     options = list(dom = "Blfrtip", 
     buttons = list('copy', 'excel', 'print', 'colvis')) 
    ) 
    } 
) 

정말 고맙습니다. (다음 DT 아래의 라벨에 열 클릭을 선택 NB)를 사용하면 다음 input$tbl_rows_selected을 제거 컬럼 만에 선택을하려면

답변

0

당신은 당신이 행과 열을 선택할 수 있습니다 여기에 input$tbl_columns_selectedinput$tbl_rows_selected

사용할 수 있습니다 설정하고 target = 'column'

library(shiny) 
library(xlsx) 
library(DT) 

shinyApp(
    ui = fluidPage(
     DT::dataTableOutput('tbl') 
     ,downloadButton("downloadData",label ="Download") 
), 

    server = function(input, output) { 
    output$tbl = DT::renderDataTable(iris, selection = list(target = 'row+column')) 

    myFilteredData <- reactive({ 
     df <- iris[input$tbl_rows_selected, input$tbl_columns_selected] 
     if (length(input$tbl_columns_selected) == 1) { 
     df <- as.data.frame(df) 
     colnames(df) <- colnames(iris)[input$tbl_columns_selected] 
     } 
     df 
    }) 

    output$downloadData <- downloadHandler(
     filename = function() {paste("test.xlsx")}, 
     content = function(file) { 
     write.xlsx(myFilteredData(),file, row.names=FALSE) 
     }) 
    } 
) 
+0

안녕하십니까. 답장을 보내 주셔서 대단히 감사합니다. 테이블 열을 결정하기 위해 checkBoxGroupInput을 사용하는 방법에 대해 생각해 보았습니다.하지만 실제로 찾고자하는 것은 DT 패키지에서 조작 할 수 있도록 실제로 DT 패키지에있는 일부 기능 또는 매개 변수입니다. 그래도 나는 당신의 도움을 고맙게 생각합니다. –