Shiny 中 DT table 中的多关键字字段
Multi-keywords field in a DT table in Shiny
我有一个 table,每个条目都有一个关键字字段链接,许多条目有多个关键字。
关键字目前由分号分隔,如下例所示。
author keywords
Shaw Anticyclonic eddy; Arctic halocline
Eddie Nonhydrostatic modeling
是否可以独立对待它们,特别是在搜索一个 DT package 的 table 时,显示它存在的每个条目?
例如,我希望用户能够搜索 "Anticyclonic eddy" 或 "Arctic halocline"。 datatables
中的默认搜索框将此条目视为一项:"Anticyclonic eddy; Arctic halocline",但我希望它是两个独立的、可单独搜索的项目。
我应该怎么做?
您并不完全清楚您希望如何搜索文本,或者您希望从中返回什么,因此示例输出会很好。
但是,根据您的描述,DT
顶部的 'search' 框听起来像是为您完成的
但是,如果你想自己控制它产生一个单独的table,你可以这样做:
server.R
library(shiny)
library(shinydashboard)
library(DT)
dt <- data.frame(author = c("Shaw", "Eddie"),
keywords = c("Anticyclonic eddy; Arctic halocline", "Nonhydrostatic modeling"))
function(input, output, session) {
output$dt_data <- renderDataTable({
dt_data <- dt
})
## search dt for text
output$dt_found <- renderDataTable({
if(input$txt_search==""){
dt_found <- NULL
}else{
txt <- input$txt_search
dt_data <- dt
dt_found <- dt_data[ grep(txt, dt_data$keywords), ]
}
return(dt_found)
})
}
ui.R
library(shiny)
library(shinydashboard)
library(DT)
dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
dataTableOutput(outputId = "dt_data"),
textInput(inputId = "txt_search", label = "Search"),
dataTableOutput(outputId = "dt_found")
)
)
我有一个 table,每个条目都有一个关键字字段链接,许多条目有多个关键字。 关键字目前由分号分隔,如下例所示。
author keywords
Shaw Anticyclonic eddy; Arctic halocline
Eddie Nonhydrostatic modeling
是否可以独立对待它们,特别是在搜索一个 DT package 的 table 时,显示它存在的每个条目?
例如,我希望用户能够搜索 "Anticyclonic eddy" 或 "Arctic halocline"。 datatables
中的默认搜索框将此条目视为一项:"Anticyclonic eddy; Arctic halocline",但我希望它是两个独立的、可单独搜索的项目。
我应该怎么做?
您并不完全清楚您希望如何搜索文本,或者您希望从中返回什么,因此示例输出会很好。
但是,根据您的描述,DT
顶部的 'search' 框听起来像是为您完成的
但是,如果你想自己控制它产生一个单独的table,你可以这样做:
server.R
library(shiny)
library(shinydashboard)
library(DT)
dt <- data.frame(author = c("Shaw", "Eddie"),
keywords = c("Anticyclonic eddy; Arctic halocline", "Nonhydrostatic modeling"))
function(input, output, session) {
output$dt_data <- renderDataTable({
dt_data <- dt
})
## search dt for text
output$dt_found <- renderDataTable({
if(input$txt_search==""){
dt_found <- NULL
}else{
txt <- input$txt_search
dt_data <- dt
dt_found <- dt_data[ grep(txt, dt_data$keywords), ]
}
return(dt_found)
})
}
ui.R
library(shiny)
library(shinydashboard)
library(DT)
dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
dataTableOutput(outputId = "dt_data"),
textInput(inputId = "txt_search", label = "Search"),
dataTableOutput(outputId = "dt_found")
)
)