我正在尝试修改此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)
```