r - 在 Shiny DT 数据表中使用空格(不是管道)批量搜索正则表达式

标签 r shiny dt shinyapps

this post之后谁能告诉我是否可以实现一种方法来搜索交互式 Shiny DT 数据表,其中关键字由空格而不是管道分隔?我的应用程序的用户将获得由空格分隔的基因列表,并且添加管道将破坏使应用程序用户友好的目的。

示例代码:

## example taken from https://rstudio.github.io/DT/007-search.html
library(DT)
mtcars2 = mtcars[, c(1:5, 9)]
mtcars2$am = factor(mtcars$am, c(0, 1), c('automatic', 'manual'))
dt <- datatable(
  mtcars2, colnames = c('model' = 1),
  filter = list(position = 'top', clear = FALSE),
  options = list(
    search = list(regex = TRUE, caseInsensitive = TRUE),
    pageLength = 5
  )
)


## ----simple Shiny app with datatable----
ui <- fluidPage(
  fluidRow(
    DT::dataTableOutput("table")
  )
)

server <- function(input, output) {
  output$table <- DT::renderDataTable(dt)
}

shinyApp(ui = ui, server = server)

works well how to work

> sessionInfo()
R version 3.6.3 (2020-02-29)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS High Sierra 10.13.6

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats4    parallel  stats     graphics  grDevices utils     datasets  methods  
[9] base     

other attached packages:
 [1] ggplot2_3.3.0        DT_0.13              rsconnect_0.8.16     shinythemes_1.1.2   
 [5] dplyr_0.8.5          shiny_1.4.0.2        BiocParallel_1.20.1  MLInterfaces_1.66.5 
 [9] cluster_2.1.0        annotate_1.64.0      XML_3.99-0.3         AnnotationDbi_1.48.0
[13] IRanges_2.20.2       MSnbase_2.12.0       ProtGenerics_1.18.0  S4Vectors_0.24.4    
[17] mzR_2.20.0           Rcpp_1.0.4.6         Biobase_2.46.0       BiocGenerics_0.32.0 

最佳答案

这里有一个方法:

library(shiny)
library(DT)

callback <- '
$("div.search").append($("#mySearch"));
$("#mySearch").on("keyup redraw", function(){
  var splits = $("#mySearch").val().split(" ").filter(function(x){return x !=="";})
  var searchString = "(" + splits.join("|") + ")";
  table.search(searchString, true).draw(true);
});
'

ui <- fluidPage(
  tags$head(tags$style(HTML(".search {float: right;}"))),
  br(),
  tags$input(type = "text", id = "mySearch", placeholder = "Search"),
  DTOutput("dtable")
)

server <- function(input, output){

  output[["dtable"]] <- renderDT({
    datatable(
      iris[c(1,2,51,52,101,102),],
      options = list(
        dom = "l<'search'>rtip"
      ),
      callback = JS(callback)
    )
  }, server = FALSE)

}

shinyApp(ui, server)

关于r - 在 Shiny DT 数据表中使用空格(不是管道)批量搜索正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61346922/

相关文章:

javascript - 查询嵌入在 Shiny 应用程序中的数据表的状态/属性

r - R中的快速字符串匹配

java - R: 无法安装 rJava;什么是 r-api-3.4?

windows - 在 Windows 下使用任何语言环境的工作日

r - 禁用标题时,Shinydashboard 会删除多余的空间

html - R Shiny withProgress Indicator Within Fluid Container

jquery - R Shiny 的 DataTables ColVis 行为

r - 计算所选列值的行数并根据 R 中的计数删除行

javascript - 如何在 Shiny 的仪表板的标题中添加下载按钮

javascript - Shiny /DT : Show Child Rows Upon Initial Load