我正在使用R Shiny输出表,但是在reactive
的{{1}}部分进行过滤时遇到了麻烦。在此示例中,我使用的是renderDataTable
表,并且尝试按mtcars
进行过滤:
type
当前,library(shiny)
library(DT)
ui <- fluidPage(
titlePanel("MTCARS"),
sidebarLayout(
sidebarPanel(id="sidebar",
textInput("type",
label = "Type",
placeholder = "Type"),)
,
mainPanel(
dataTableOutput("data")
)
)
)
server <- function(input, output, session) {
selected <- reactive({
if (length(input$type) != 0) {
mtcars$type %in% input$type
} else {
TRUE
}
})
output$data <- renderDataTable(mtcars[selected(),])
}
shinyApp(ui = ui, server = server)
根据用户输入的mtcars$type %in% input$type
来过滤表。但是,我要对此进行修改,以便:
type
,则将显示包含Honda Civic
的行。答案 0 :(得分:1)
mtcars
没有任何列类型,因此我必须创建一个。我使用stringr::str_detect
来包含部分匹配的类型。
library(shiny)
library(DT)
data <- mtcars %>%
rownames_to_column(var = "type")
ui <- fluidPage(
titlePanel("MTCARS"),
sidebarLayout(
sidebarPanel(id="sidebar",
textInput("type",
label = "Type",
placeholder = "Type"),)
,
mainPanel(
dataTableOutput("data")
)
)
)
server <- function(input, output, session) {
selected <- reactive({
if (length(input$type) != 0) {
stringr::str_detect(data$type, input$type)
} else {
TRUE
}
})
output$data <- renderDataTable(data[selected(),])
}
shinyApp(ui = ui, server = server)