我遇到了为使用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上发布的版本都存在问题。我已阅读了几篇相关文章,但无法找到令人满意的解决方案。非常感谢你的帮助!
答案 0 :(得分:1)
如果我理解你,你需要some_table_row_selected
和table_x
(dd$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)
在每个会话中,您的数据都会刷新
最好的例子,任何人都可以复制,粘贴和测试。