代码之家  ›  专栏  ›  技术社区  ›  Eric Green

flexdashboard:新选项卡集中的引用对象

  •  0
  • Eric Green  · 技术社区  · 7 年前

    dat2 数据2 在第二个标签集中。真正的用例更复杂,我没有从全局运行的设置(也许我需要弄清楚如何做到这一点)。

    数据2

    ---
    title: "test"
    output: 
      flexdashboard::flex_dashboard:
        theme: bootstrap
    runtime: shiny
    ---
    
    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(tidyverse)
    ```
    
    ```{r global, include=FALSE}
      set.seed(1)
      dat <- data.frame(age = sample(15:99, 100, replace=TRUE),
                        y = runif(100))
    ```
    
    Sidebar {.sidebar}
    =====================================
    
    ```{r}
    # age
      sliderInput("agerange", label = "Age", 
                  min = 15, 
                  max = 99, 
                  value = c(15, 99),
                  step=10)
    ```
    
    Page 1
    =====================================
    
    Column {.tabset}
    -----------------------------------------------------------------------
    
    ### Plot
    
    ```{r}
    renderPlot({
      dat2 <- 
      dat %>%
        filter(age >= input$agerange[1] & age <= input$agerange[2]) %>%
        mutate(y2 = y*2)
    
      ggplot(dat2, aes(y2)) +
        geom_histogram()
    })
    ```
    
    
    Column {.tabset}
    -----------------------------------------------------------------------
    
    ### Table
    
    ```{r}
      DT::renderDataTable({
        DT::datatable(dat2, options = list(bPaginate = FALSE))
      })
    ```
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Eric Green    7 年前

    这似乎有效(基于 this SO answer ). 更简单的解决方案,或者是在反应式中进行咀嚼的基本方法,分配给 object render object <- object()

    ---
    title: "test"
    output: 
      flexdashboard::flex_dashboard:
        theme: bootstrap
    runtime: shiny
    ---
    
    ```{r setup, include=FALSE}
    library(flexdashboard)
    library(tidyverse)
    ```
    
    ```{r global, include=FALSE}
      set.seed(1)
      dat <- data.frame(age = sample(15:99, 100, replace=TRUE),
                        y = runif(100))
    ```
    
    Sidebar {.sidebar}
    =====================================
    
    ```{r}
    # age
      sliderInput("agerange", label = "Age", 
                  min = 15, 
                  max = 99, 
                  value = c(15, 99),
                  step=10)
    ```
    
    Page 1
    =====================================
    
    Column {.tabset}
    -----------------------------------------------------------------------
    
    ### Plot
    
    ```{r}
      dat2 <- reactive(
        dat %>%
        filter(age >= input$agerange[1] & age <= input$agerange[2]) %>%
        mutate(y2 = y*2)
      )
    
    renderPlot({
      dat2 <- dat2()
    
      ggplot(dat2, aes(y2)) +
        geom_histogram()
    })
    ```
    
    
    Column {.tabset}
    -----------------------------------------------------------------------
    
    ### Table
    
    ```{r}
      DT::renderDataTable({
        dat2 <- dat2()
        DT::datatable(dat2, options = list(bPaginate = FALSE))
      })
    ```