在数据表中,一些值应该根据是否选择相应的行而改变。让我头疼的是:当数据更新时,表格被重写,选择消失了。
我已经为这个挑战工作了几个小时,但还没有找到解决方案。大多数时候我在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')
)
})
)
顺便说一句,一个不太优雅但也可能的方法是添加一列复选框,而不是数据表行选择机制。我也尝试过,但遇到了类似的问题。一切都按照我想要的方式进行,直到我将反应列添加到我的数据中。