R 数据表-选择行时更改表内容

R 数据表-选择行时更改表内容,r,shiny,dt,shiny-reactivity,R,Shiny,Dt,Shiny Reactivity,在数据表中,一些值应该根据是否选择了相应的行而改变。让我头疼的是:当数据被更新时,表被重新写入,选择也消失了 我已经为这个挑战工作了几个小时,但还没有找到解决方案。大多数时候,我在stackoverflow找到解决问题的方法,但这次我没有 在下面的示例中,最后一列应该显示行的选择状态。我试图跟踪所选行,并在重新写入表时预先选择它们。但我不知道如何使它工作;代码不起作用,但(希望)显示了我需要的东西 library(shiny) library(DT) mymtcars = mtcars[1:5,

在数据表中,一些值应该根据是否选择了相应的行而改变。让我头疼的是:当数据被更新时,表被重新写入,选择也消失了

我已经为这个挑战工作了几个小时,但还没有找到解决方案。大多数时候,我在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')
       )
   })
)
库(闪亮)
图书馆(DT)
mymtcars=mtcars[1:5,1:2]
runApp(
列表(ui=fluidPage(DT::dataTableOutput(“mytable”),
服务器=功能(输入、输出、会话){

rowSelect您几乎答对了!您必须使用
datatable
包装您的表:

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"))
)

output$mytable抱歉,由于我的声誉太低,我无法投票表决您的答案是否有用:-(也许您还知道如何在表格开始时选择所有行?@Hans在datatable中应该有一个类似于
selected=“all”
的选项,这很棘手,因为此选项已经用于记住以前的选择(在重新编写表之前)。我可以通过让
v=!rowSelect()
将“selected”重新解释为“notselected”,反之亦然。但我认为不这样“欺骗”会更优雅。但无论如何,非常感谢您,您的回答对我帮助很大。