2017-05-27 62 views
7

Mam następujący własnym zawierające Shiny-Flexdashboard:Jak przedłużyć renderTable szerokość w błyszczące 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%' 
) 
) 
``` 

Produkuje tabeli tak:

enter image description here

Jak stwierdzono tam jak mogę zwiększyć szerokość kolumny?

+0

zestaw 'width = '200%'' również załatwi sprawę. – parth

+0

wraz z 'orientation: columns' w' output' w nagłówku Markdown – parth

Odpowiedz

5

Interesujące. Jeśli spojrzysz na dokument z ?mainPanel(). widać, że szerokość jest domyślnie ograniczona do „8” (12 to max): mainPanel(..., width = 8)

więc jeśli simplfy zmienić na: mainPanel(..., width = 12) będzie działać.

+0

Thanks.How mogę zrobić biały obszar, aby rozciągnąć do pełnej szerokości strony? – neversaint

+0

Mogę rzucić okiem później. Czy już spojrzałeś tutaj: https://stackoverflow.com/questions/15385696/how-to-adjust-the-output-width-of-rstudio-markdown-output-to-html? – BigDataScientist

2

Za pomocą width = 12 w mainPanel i załączeniu tabeli wewnątrz div załatwił sprawę.

--- 
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%' 
)) 
) 
``` 

Wytwarza wyjścia jak: snapshot

2

myślę, że ważne jest, aby pamiętać, że mainPanel nie jest przeznaczony dla przypadku użycia tutaj. Jest to „poprawne” Wykorzystanie mainPanel i dlaczego tam jest domyślnym 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)) 
    } 
) 
) 
) 

Ponadto, będziesz mieć znacznie większą elastyczność w tabelach jeśli używasz DT :: renderDataTable który można przeczytać tutaj o https://rstudio.github.io/DT/

W rzeczywistości domyślnie zajmuje to 100% szerokości okna przeglądarki bez potrzeby stosowania otoki. Możesz rozważyć użycie fillPage i fluidPage w swoich elastycznych tablicach, aby kontrolować rozmiar/obszar dedykowany poszczególnym elementom.

--- 
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" 
) 
```