我正在构建一个带有数据表的闪亮应用程序。 我想要的是启动时不显示任何记录(行)。这样您只能看到表格顶部的过滤器。当您开始输入时,会显示行。 我在数据表中找不到选项。这可能吗?
下面是示例代码。
shinyApp(
ui = navbarPage(
title = 'DataTable',
DT::dataTableOutput('ex2')
),
server = function(input, output, session) {
output$ex2 <- DT::renderDataTable(
DT::datatable(
iris,
options = list(
dom = 'Bfrtip',
lengthMenu = list(c(5, 15, -1), c('5', '15', 'All'))
)
)
)
}
)
您可以制作自己的搜索功能:
编辑:添加了正在搜索的第二个
character
列。
shinyApp(
ui = navbarPage(
title = 'DataTable',
textInput('search', 'search'),
DT::dataTableOutput('ex2')
),
server = function(input, output, session) {
require(dplyr)
iris.mut <- iris %>%
mutate(bottom = paste0('v',sapply(Sepal.Width,function(x)paste0(rep('z',x*2),collapse="")),'bx'))
dat <- reactive({
if(input$search!=''){
iris.mut %>%
filter(grepl(input$search,Species)|grepl(input$search,bottom))
} else {
iris.mut %>%
filter(Species == input$search)
}
})
output$ex2 <- DT::renderDataTable(
DT::datatable(
dat(),
options = list(
lengthMenu = list(c(5, 15, -1), c('5', '15', 'All'))
)
))
}
)
可能不是最有效的方法,但我会使用虚拟的
data.frame
在启动时显示。当您选择过滤器(例如 selectizeInput()
)时,将显示“真实”数据。
output$ex2 <- renderDT({
myFilter <- input$myFilter
# assuming selectizeInput() is used
if(is.null(myFilter)){
irisDF <- data.frame(Sepal.Length = "",
Sepal.Length = "",
Petal.Length = "",
theREst = "")
} else {
irisDF <- iris
}
DT::datatable(irisDF, options = list(
dom = 'Bfrtip',
lengthMenu = list(c(5, 15, -1), c('5', '15', 'All')))
)
})