【问题标题】:shiny flexdashboard: reference object in new tabset闪亮的 flexdashboard:新标签集中的引用对象
【发布时间】:2018-09-07 15:10:13
【问题描述】:

我有一个带有一列和两个标签集的 flexdashboard。我想在一个标签集中创建和绘制dat2,然后在第二个标签集中显示dat2 的数据。真正的用例更复杂,我没有设置它从全局运行(也许我需要弄清楚如何做到这一点)。

以下导致无法找到dat2 的错误。

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

【问题讨论】:

    标签: r shiny flexdashboard


    【解决方案1】:

    这似乎可行(基于this SO answer)。那里有更简单的修复,或者是在响应式中进行修改的基本方法,分配给响应式内部的 object,然后在 render 函数中重新分配该对象(例如,object &lt;- 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))
      })
    ```
    

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 1970-01-01
      • 2021-03-02
      • 2016-02-20
      • 2020-05-03
      • 2017-05-28
      • 2017-03-29
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多