数据表输出在Y方向上不可滚动

时间:2017-01-23 19:42:18

标签: r shiny dt flexdashboard

我希望在R中的flexdashboard中显示数据。我使用DT::renderDataTable({DT::datatable(data(), options=list(scrollX=TRUE))})构建数据表

当显示10个条目时,这很好用,但是当我选择显示25个条目的选项时,我无法向下滚动到页面底部并单击第二个页面按钮,下一个按钮等。我不能像我以前一样垂直滚动。我尝试了sScrollY = "300px"选项,但这并不是让数据表扩展来填充我的flexdashboard上的整个页面。问题是当我尝试在y方向上滚动时,观察行被切断并且无法访问。

我想知道我需要做些什么来使数据表扩展并按预期填充,如https://shiny.rstudio.com/gallery/datatables-options.html

所示

从示例中,您可以看到在更改显示的行数时仍可以向上和向下滚动。我不能在新版本的datatable中执行此操作。截至目前,我将显示的行数限制为10 ......但是,这不是长期解决方案。

非常感谢任何想法。谢谢。最好的,NF

4 个答案:

答案 0 :(得分:1)

我还没能找到一个我满意的解决方案,但是对于过渡时期,我正在使用sScrollY = '75vh'争论并构建这样的数据表:

DT::renderDataTable({ DT::datatable(plot_data(), options = list(scrollX = TRUE, sScrollY = '75vh', scrollCollapse = TRUE), extensions = list("Scroller")) })

至少这样可以看出分页。如果有人有其他想法,我很乐意听到他们。干杯现在。 --Nate

答案 1 :(得分:0)

我遇到了同样的问题,我无法扩展数据表。问题是默认情况下所有数据表都有autoWidth = FALSE选项,因此您需要将其更改为autoWidth = TRUE

尝试这样的事情:

DT::renderDataTable({DT::datatable(data(), options=list(autoWidth = TRUE,scrollX=TRUE))})

之后你应该使用Width操作。

这是一个例子。

  library(shiny)
  library(shinydashboard)
  library(DT)

  ui <- dashboardPage(
  dashboardHeader(title="Data Table"),
  dashboardSidebar(
    menuItem(text="Menu",icon=icon("bars"),
             menuSubItem(text="Show datatable",tabName="ShowData", icon=icon("search")))
  ),
  dashboardBody(
    tabItems(
      tabItem(tabName="ShowData",
              box(DT::dataTableOutput("Data"),width = 12)))))

server <- shinyServer(function(input, output) {

  output$Data<-DT::renderDataTable({DT::datatable(data(),options = list(autoWidth = TRUE,scrollX = TRUE))})
})

shinyApp(ui = ui, server = server)

答案 2 :(得分:0)

您可以使用:option = list(scrollY = 300,scrollCollapse = TRUE)。我在R Notebook中尝试过,它对我有用。

答案 3 :(得分:0)

感谢您举报。正如我在rstudio/DT#818所回答的那样,可以通过在fillContainer = TRUE上添加选项DT::datatable()来解决该问题。

我的意思是,像下面这样更改块就足够了。


### renderDataTable (reactive)

```{r}

DT::renderDataTable(datatable(mydataset(), rownames = TRUE,
                              options = list(bPaginate = FALSE, searching = FALSE, info = FALSE),
                              fillContainer = TRUE))
```

FlexDashBoard将启用使用静态数据(DT::datatable())的原因是fillContainer。但是,在闪亮模式下,此功能无法执行。