将有光泽的r markdown从downloadHandler转换为renderUI

时间:2018-01-24 16:34:18

标签: r shiny knitr r-markdown

我正在尝试修改此example以在主Ui面板中添加降价报告的预可视化,但我无法使用rmarkdown :: render正确传递参数。

shinyApp(
  ui = fluidPage(
    sidebarLayout(
      sidebarPanel(
          sliderInput("slider", "Slider", 1, 100, 50),
          downloadButton("report", "Generate report")),

      mainPanel(
        uiOutput('reportUi')
      )
    )  

  ),
  server = function(input, output) {

    output$report <- downloadHandler(
      filename = "report.html",
      content = function(file) {
        tempReport <- file.path(tempdir(), "report.Rmd")
        file.copy("report.Rmd", tempReport, overwrite = TRUE)

        # Set up parameters to pass to Rmd document
        params <- list(n = input$slider)

        # Knit the document, passing in the `params` list

        rmarkdown::render(tempReport, output_file = file,
                          params = params,
                          envir = new.env(parent = globalenv())
        )
      }
    )



    output$reportUi <- renderUI({

        tempReportUi <- file.path(tempdir(), "report.Rmd")
        file.copy("report.Rmd", tempReportUi, overwrite = TRUE)

        # Set up parameters to pass to Rmd document
        paramsUi <- list(n = input$slider)

        rmarkdown::render(tempReportUi, output_file = file,
                          params = paramsUi,
                          envir = new.env(parent = globalenv()))        
    })

  }
)

report.Rmd

Here is my regression model:

```{r model, collapse=TRUE}
options(digits = 4)
fit <- lm(params$n, data = mtcars)
b   <- coef(fit)
summary(fit)
```

The fitting result is $mpg = `r b[1]` + `r b[2]``r input$x`$.
Below is a scatter plot with the regression line.

```{r plot, fig.height=5}
par(mar = c(4, 4, 1, 1))
plot(regFormula(), data = mtcars, pch = 19, col = 'gray')
abline(fit, col = 'red', lwd = 2)
```

0 个答案:

没有答案