使用串扰选择多个值并取消选择数据帧的某些值

问题描述

我在下面有一个闪亮的应用程序,我在其中使用 crosstalk 包来创建图表和表格之间的交互。我想问一下是否可以同时选择多个条形以将表格恢复到其初始形式,以及如何取消选择一个条形而不必单击另一个条形?

library(shiny)
library(ggplot2)
library(plotly)
library(DT)
library(crosstalk)

ui <- fluidPage(
  plotlyOutput("plt"),DT::dataTableOutput("dt")
)

server <- function(input,output) {
  df <- data.frame(dose=c("D0.5","D1","D2"),len=c(4.2,10,29.5))
  df2 <- data.frame(dose=c("D0.5",siz=c(2,2.5))
  
  shared_df <- SharedData$new(df,key = ~dose,group = "group")
  shared_df2 <- SharedData$new(df2,group = "group")
  
  output$plt<-renderPlotly({
    # Basic barplot
    p <- ggplot(data=shared_df,aes(x=dose,y=len)) +
      geom_bar(stat="identity")
    ggplotly(p)
  })
  
  output$dt<-DT::renderDataTable({
    shared_df2
  },server = FALSE)
}
shinyApp(ui,server)

解决方法

当只有一个栏被选中并且表格中显示一行时,按住shift键并单击其他未选中的栏将其选中,关联的数据行将显示在表格中。选择所有条形后,将显示所有行。

此外,您可以选择和取消选择表格中的任意位置,以根据选中/取消选中的数据行显示选中/取消选中的条。