无法使用 Rmarkdown 在 Shiny 应用程序中渲染 ggvis 图

Cannot render ggvis plot in Shiny app using Rmarkdown

我很难让 ggvis 和 shiny 在基于 Rmarkdown 的应用程序中很好地发挥作用。即使不使用 bind_shinyggvisOutput(如 here 所示),我也可以毫无问题地创建以下 ggvis 图:

---
title: "test"
runtime: shiny
output: html_document
---

```{r setup, include=FALSE}
require(ggvis)
knitr::opts_chunk$set(echo = TRUE)
```

```{r static}
inputPanel(
  sliderInput('n', 'n:', min = 10, max = 100, value = 50),
  actionButton('run', 'Run!')
)

data = data.frame(x = rnorm(50))

data %>%
  ggvis(~x) %>%
  layer_histograms()
```

但是,我正在构建动态报告以允许用户配置输入数据,然后通过点击 'run' 按钮重新执行,如下所示:

```{r config}
inputPanel(
  sliderInput('n', 'n:', min = 10, max = 100, value = 50),
  actionButton('run', 'Run!')
)

data = eventReactive(input$run, { data = data.frame(x = rnorm(input$n)) })

data %>%
  ggvis(~x) %>%
  layer_histograms()
```

当我尝试 运行 文档时,我收到无法描述的错误 Quitting from lines 26-36 (test.Rmd)。有人知道如何让它工作吗?

更新:

这几乎可以工作,但是当我点击 'Run!' 时,ggvis 图会在单独的浏览器中呈现 window 而不是在文档中呈现:

```{r config}
inputPanel(
  sliderInput('n', 'n:', min = 10, max = 100, value = 50),
  actionButton('run', 'Run!')
)

data = eventReactive(input$run, { data = data.frame(x = rnorm(input$n)) })

renderTable({summary(data())})

renderPlot({
  data() %>%
    ggvis(~x) %>%
    layer_histograms() %>%
    bind_shiny('plot')

})

ggvisOutput('plot')
```

您链接的两个问题表明您需要 reactive({ 中的 'ggvis' 代码,而不是 renderPlot({

这对我有用

---
title: "test"
runtime: shiny
output: html_document
---

```{r config}
library(ggvis)
inputPanel(
  sliderInput('n', 'n:', min = 10, max = 100, value = 50),
  actionButton('run', 'Run!')
)

data = eventReactive(input$run, { data = data.frame(x = rnorm(input$n)) })

renderTable({summary(data())})

reactive({
  data() %>%
    ggvis(~x) %>%
    layer_histograms() %>%
    bind_shiny('plot')

})

ggvisOutput('plot')
```