作为一个最小的工作示例,
# An app with a datatable whose pagination option we can toggle with a button
library(shiny)
runApp(list(
ui = basicPage(
actionButton("button", label = "Toggle paginate"),
dataTableOutput("table")
),
server = function(input, output) {
output$table <- renderDataTable(
data.frame(x = 1:100, y = input$button), # Some dummy data
options = list(
bPaginate = as.logical(input$button %% 2)
)
)
}
))
对应的浏览器输出:
我应该能够动态切换选项bPaginate
只需单击“切换分页”按钮即可打开和关闭。
然而,这不起作用——表格永远不会分页。出了什么问题?
我也在数据表小部件上遇到了困难。两者都不renderDataTable
nor DT::renderDataTable
当选项以简单列表形式给出时,似乎可以识别并重新渲染输出。
Yihui的答案适用于闪亮的底座renderDataTable
,但我永远不会猜到这是一个解决方案,而且我不明白为什么一个函数可以工作,而一个普通的列表却不能。我认为这是底层 Javascript 的一些内部实现问题,但这似乎是一个不应该泄漏到 R api 中的实现细节。
然而,我不能让一辉的答案适用于DT
DataTable 包的版本。也许这只是我的错误,但我最终找到了另一种方法来让用户输入影响表选项,而不使用选项函数。这样做需要一个额外的(反应性)变量层并使用datatable()
功能。 (请注意,最新的 DataTable 版本都基于使用不同的选项名称,并且我使用的 ui 与上面的问题略有不同。这些都不会改变基本问题或其解决方案。)
# An app with a datatable whose pagination option we can toggle with a button
library(shiny)
runApp(list(
ui = fluidPage(
sidebarLayout(
sidebarPanel(
checkboxInput("paging", "Paginate table")
),
mainPanel(
DT::dataTableOutput("table")
)
)
),
server = function(input, output) {
# Create a new table when input$paging changes
makeTable <- reactive({
DT::datatable(
{ data.frame(x= 1:100, y = input$paging)}, # Some dummy data
options= list(
paging = input$paging
)
)
})
# Render the datatable returned by the reactive function
output$table <- DT::renderDataTable( makeTable() )
}
))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)