闪亮的DT _row_last_clicked

时间:2016-06-23 07:57:15

标签: r shiny dt

我遇到了为使用rstudio DT库在闪亮接口中创建的表提供的_row_last_clicked选项的问题。我试图在数据表中选择一行,对其进行修改并将其输出到闪亮的ui.r.它适用于首次选择,但当我再次单击我之前选择的同一个表行时,_row_last_clicked似乎仍然没有响应(= NULL?)。这是我想要实现的最小例子(ui.r可能不相关):

# server.r-side:

table_x<-# ... loads the dataframe
redo_cal<-reactiveValues()  
redo_cal$a<-1

observe({ 
    redo_cal$a
    output$some_table <- DT::renderDataTable(           
        table_x,
        server = TRUE, # same problem with FALSE
        selection =c('single')
    )
})


observeEvent(
    input$some_table_row_last_clicked,{
    s<-input$some_table_row_last_clicked
    table_x[s,]<- # some reversible modifications based on the row selection ...
    redo_cal$a<-(redo_cal$a+1) # trigger above renderDataTable
})

最新的github版本的DT以及CRAN上发布的版本都存在问题。我已阅读了几篇相关文章,但无法找到令人满意的解决方案。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

如果我理解你,你需要some_table_row_selectedtable_xdd$d - 在我的例子中)是reactiveValues

参见示例 x的# some reversible modifications based on the row selection == log 每次在此行中选择x的行值log - ed

library(shiny)
library(DT)
data=data.frame(x=1:10,y=2:11)

ui=shinyUI(
  fluidPage(
    DT::dataTableOutput("tt")
  )
)


server=shinyServer(function(input, output) {
  dd=reactiveValues(d=data)
  output$tt=DT::renderDataTable(
    datatable(
      dd$d,selection =c('single')
    )


  )
  observeEvent(input$tt_rows_selected,{

    dd$d[input$tt_rows_selected,1]<-log(dd$d[input$tt_rows_selected,1])
  })
})

shinyApp(ui,server)

在每个会话中,您的数据都会刷新

PS

最好的例子,任何人都可以复制,粘贴和测试。