r语言 - 闪亮的DT包数据表输出不允许观察监视选定的行



我有一个闪亮的界面,我有两个DT表。我希望第二个表基于反应表达式(有效(的输出与第一个表中的选定数据相结合来呈现。但是,当我为第二个DT renderTable表达式编写观察器时,整个观察器不会对所选行中的更改做出反应。我想这是因为 input$table_selected_rows 在代码中没有定义,而是以某种方式固有于 DT 包(我只定义 input$table(。第二个表的代码是

row<-reactive({
print("check")
input$table_selected_rows
})
observe({
a=row()
print(a)
if(length(a)>0){
res=dtf()
ID=res[a,]
res=res[which(res$ID==ID),]
output$table2=DT::renderDataTable(dplyr::distinct(res),
selection=list(mode="single",target="row"))
}
})
observe({
row()
})

在上面的代码中,"check"仅在代码初始化时打印一次,而不是在我从会话中的第一个表中选择行时打印一次。如何强制 shiny 监控输入 $table_selected_rows 以便第二个表对第一个表做出反应?

代码中的问题是,你切换了输入名称:

table_selected_rows应该是table_rows_selected.请在此处查看第 2.1.1 章。

下面是一个简单的可重现示例:

library(shiny)
library(DT)
library(datasets)
ui <- fluidPage(
DTOutput("Tab1"),
DTOutput("Tab2")
)
server <- function(input, output, session) {
output$Tab1 <- renderDT({iris}, selection=list(mode = "single", target = "row"))
row <- reactive({input$Tab1_rows_selected})
output$Tab2 <- renderDT({data.frame(row())})
}
shinyApp(ui, server)

相关内容

最新更新