【问题标题】:Save filtered DT::datatable into a new dataframe R shiny将过滤后的 DT::datatable 保存到新的数据框 R 闪亮
【发布时间】:2023-03-28 03:24:01
【问题描述】:

假设我有一个闪亮的应用程序,显示如下数据表:

library(shiny)
library(tidyverse)
library(datasets)
library(DT)

data<- as.data.frame(USArrests)
#data<- cbind(state = rownames(data), data)
ui <- fluidPage(
    dataTableOutput("preview")
)

# Define server logic required to draw a histogram
server <- function(input, output) {

    output$preview<- renderDataTable(
        datatable(data, options = list(searching = T, pageLength = 10, lengthMenu = c(5,10,15, 20), scrollY = "600px", scrollX = T ))
    )
    
}

# Run the application 
shinyApp(ui = ui, server = server)

假设我在搜索框中输入“Iowa”。我想将该过滤后的数据表保存到应用程序内的单独数据框中。我也希望它是动态的,所以如果我输入“Kentucky”,它会将 Kentucky 的过滤数据保存到数据框中。有没有办法做到这一点? 注意:这是一个 DT 数据表

【问题讨论】:

    标签: r shiny dt


    【解决方案1】:

    也许是这种类型的解决方案。可以添加更多条件,例如检查大写的第一个字母,但主要思想是检查每一列并搜索在datatable 搜索框中输入的模式。这可能会或可能不会导致打印多个数据集(取决于字符串是否在多个列中部分匹配(这也可以通过 rbind 函数解决。

    代码:

    library(shiny)
    library(tidyverse)
    library(datasets)
    library(DT)
    data <- as.data.frame(USArrests)
    data <- cbind(state = rownames(data), data)
    ui <- fluidPage(
      dataTableOutput("preview"),
      tableOutput('filtered_df')
    )
    
    # Define server logic required to draw a histogram
    server <- function(input, output) {
      
      df <- reactiveValues()
      
      output$preview<- renderDataTable(
        datatable(data, options = list(searching = T, pageLength = 10, lengthMenu = c(5,10,15, 20), scrollY = "600px", scrollX = T ))
      )
     
      observeEvent(input$preview_search, {
       searched_string <- map(data, ~str_subset(.x, input$preview_search)) %>% discard(~length(.x) == 0)  
       
       df$filtered <- syms(names(data)) %>%
                       map(~ filter(data, !!.x %in% searched_string)) %>%
                       discard(~ nrow(.x) == 0)
       
       
       
      })
      
      output$filtered_df <- renderTable({df$filtered})
      
    }
    
    # Run the application 
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 2018-10-04
      • 2021-09-02
      • 2018-02-13
      • 2015-09-28
      • 2018-02-01
      • 2016-02-18
      • 2017-11-09
      • 1970-01-01
      相关资源
      最近更新 更多