How to increase renderTable width in Shiny flexdashboard

I have the following self-contained Shiny-Flexdashboard:

--- title: "FOO" runtime: shiny output: flexdashboard::flex_dashboard: vertical_layout: scroll orientation: rows theme: default --- ```{r setup, include=FALSE} library(flexdashboard) library(tidyverse) ``` Rows ------------------------------------- ### Statistical Test Summary ```{r stat_test_table} mainPanel( renderTable( { dat <- df <- structure(list(`Sample name` = structure(1:3, .Label = c("Sample1", "Sample2", "Sample3"), class = "factor"), `FDR correction (mean)` = c(5.93070861978308e-15, 6.88632524238004e-13, 3.28339498763286e-16), `FDR correction (sd)` = c(2.00046170407461e-14, 2.32019633515427e-12, 1.10782095003689e-15), `P-value (mean)` = c(5.55365134900322e-15, 6.44757191496266e-13, 3.07475941705412e-16), `P-value (sd)` = c(1.98732517127302e-14, 2.30494707691577e-12, 1.10054774779699e-15)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sample name", "FDR correction (mean)", "FDR correction (sd)", "P-value (mean)", "P-value (sd)"), row.names = c(NA, -3L)) } , digits=-2, width = '100%' ) ) ``` 

It creates a table as follows:

enter image description here

As indicated, how to increase column width?

+7
r shiny r-markdown flexdashboard
source share
3 answers

Interesting. If you look at the document ?mainPanel() . You will see that the default width is limited to "8" (12 is the maximum): mainPanel(..., width = 8)

So, if you just change to: mainPanel(..., width = 12) it will work.

+5
source share

Using width = 12 in the mainPanel and the closing table inside the div did the trick.

 --- title: "FOO" runtime: shiny output: flexdashboard::flex_dashboard: vertical_layout: scroll orientation: columns theme: default --- ```{r setup, include=FALSE} library(flexdashboard) library(tidyverse) ``` Columns ------------------------------------- ### Statistical Test Summary ```{r stat_test_table} mainPanel(width = 12, div(style="height:570px", renderTable( { dat <- df <- structure(list(`Sample name` = structure(1:3, .Label = c("Sample1", "Sample2", "Sample3"), class = "factor"), `FDR correction (mean)` = c(5.93070861978308e-15, 6.88632524238004e-13, 3.28339498763286e-16), `FDR correction (sd)` = c(2.00046170407461e-14, 2.32019633515427e-12, 1.10782095003689e-15), `P-value (mean)` = c(5.55365134900322e-15, 6.44757191496266e-13, 3.07475941705412e-16), `P-value (sd)` = c(1.98732517127302e-14, 2.30494707691577e-12, 1.10054774779699e-15)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sample name", "FDR correction (mean)", "FDR correction (sd)", "P-value (mean)", "P-value (sd)"), row.names = c(NA, -3L)) } , digits=-2, width = '100%' )) ) ``` 

It produces a conclusion like: snapshot

+2
source share

I find it important to note that mainPanel is not intended for your use here. This is the β€œcorrect” use of mainPanel and why there is a default value of width = 8

 sidebarLayout( sidebarPanel(sliderInput("thing", "Thing", min = 0, max = 5, value = 4)), mainPanel( renderDataTable( { input$Thing dat <- df <- structure(list(`Sample name` = structure(1:3, .Label = c("Sample1", "Sample2", "Sample3"), class = "factor"), `FDR correction (mean)` = c(5.93070861978308e-15, 6.88632524238004e-13, 3.28339498763286e-16), `FDR correction (sd)` = c(2.00046170407461e-14, 2.32019633515427e-12, 1.10782095003689e-15), `P-value (mean)` = c(5.55365134900322e-15, 6.44757191496266e-13, 3.07475941705412e-16), `P-value (sd)` = c(1.98732517127302e-14, 2.30494707691577e-12, 1.10054774779699e-15)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sample name", "FDR correction (mean)", "FDR correction (sd)", "P-value (mean)", "P-value (sd)"), row.names = c(NA, -3L)) } ) ) ) 

In addition, you will have much greater flexibility in your tables if you use DT :: renderDataTable, which you can read about here https://rstudio.imtqy.com/DT/

In fact, by default, this requires 100% of the width of the browser window without requiring a wrapper. You can use fillPage and fluidPage in your flexible tables to control the size / area allocated to individual elements.

 --- title: "FOO" runtime: shiny output: flexdashboard::flex_dashboard: vertical_layout: scroll orientation: rows theme: default --- ```{r setup, include=FALSE} library(flexdashboard) library(tidyverse) library(DT) ``` Rows ------------------------------------- ### Statistical Test Summary ```{r} DT::renderDataTable( { input$Thing dat <- df <- structure(list(`Sample name` = structure(1:3, .Label = c("Sample1", "Sample2", "Sample3"), class = "factor"), `FDR correction (mean)` = c(5.93070861978308e-15, 6.88632524238004e-13, 3.28339498763286e-16), `FDR correction (sd)` = c(2.00046170407461e-14, 2.32019633515427e-12, 1.10782095003689e-15), `P-value (mean)` = c(5.55365134900322e-15, 6.44757191496266e-13, 3.07475941705412e-16), `P-value (sd)` = c(1.98732517127302e-14, 2.30494707691577e-12, 1.10054774779699e-15)), class = c("tbl_df", "tbl", "data.frame"), .Names = c("Sample name", "FDR correction (mean)", "FDR correction (sd)", "P-value (mean)", "P-value (sd)"), row.names = c(NA, -3L)) }, extensions = "Responsive" ) ``` 
+2
source share

All Articles