2017-09-22 9 views
1

데이터 테이블에서 일부 값은 해당 행의 선택 여부에 따라 변경됩니다. 나에게 두통을 일으키는 원인은 다음과 같습니다. 데이터가 업데이트되면 테이블이 다시 쓰여지고 선택이 사라집니다.Shiny DT :: datatable - 선 선택시 테이블 내용 변경

나는이 문제를 두 시간 동안 해결해 왔지만 해결책을 찾지 못했습니다. 대부분의 시간 stackoverflow에서 내 문제에 대한 해결책을 찾았지만, 이번에는 그렇지 않았습니다.

아래 예제에서 마지막 열은 행의 선택 상태를 나타냅니다. 선택한 행을 추적하고 표가 다시 작성 될 때마다 미리 선택하려고했습니다. 하지만 어떻게 작동시키는 지 알 수는 없었습니다. 코드가 작동하지 않지만 (희망을 갖고) 내가 필요한 것을 보여줍니다. 그런데

library(shiny) 
library(DT) 
mymtcars = mtcars[1:5, 1:2] 

runApp(
    list(ui = fluidPage(DT::dataTableOutput("mytable")), 

    server = function(input, output, session) { 
     rowSelect <- reactive({ 
      a <- rep(FALSE,5) 
      a[input$mytable_rows_selected] <- TRUE 
      return(a) 
     }) 

     output$mytable = DT::renderDataTable(
      cbind(mymtcars, v=rowSelect()), 
      options = list(dom="t", 
          ordering=FALSE), 
      selection=list(mode='multiple', 
          selected=(1:5)[rowSelect()], 
          target='row') 
     ) 
    }) 
) 

는 덜 우아한 아니라 가능한 방법 대신에 데이터 테이블 행 선택 메커니즘의 체크 박스의 항목을 추가 할 것이다. 나는 또한 그것을 시도했지만 비슷한 문제가 있었다. 모든 것이 데이터에 반응성 열을 추가 할 때까지 원하는 방식대로 작동했습니다.

답변

1

거의 맞습니다! 당신은 datatable와 테이블을 감싸 넣어 가지고 내 명성이 너무 낮은 :-(이 어쩌면 당신은 모든 라인이 selcted와 테이블을 시작하는 방법을 알고 그대로

output$mytable <- DT::renderDataTable(
    datatable(cbind(mymtcars, v=rowSelect()), 
       options = list(dom = "t",ordering = FALSE), 
       selection = list(mode = "multiple", 
           selected =(1:5)[rowSelect()], 
           target = "row")) 
) 

enter image description here

+0

가 미안 유용한 답변을 투표 할 수 있습니다 ? – Hans

+0

@Hans 데이터 시트에'selected = "all"' – PoGibas

+0

과 같은 옵션이 있어야합니다.이 옵션은 이미 테이블을 다시 작성하기 전의 이전 선택을 기억하기 위해 이미 사용되고 있기 때문에 까다 롭습니다. "selected"를 "not selected"로 해석하고'v =! rowSelect()'를 사용하여 그 반대의 경우도 마찬가지입니다. 그러나이 방법으로 "속임수"하지 않는 것이 더 멋지다고 생각합니다.하지만 어쨌든, 정말 고맙습니다. 나를 크게 도왔다. – Hans