#r #ggplot2 #shiny #r-markdown
#r #ggplot2 #блестящий #r-markdown
Вопрос:
Я хочу вывести блестящее приложение в виде отчета в формате PDF. Но R Markdown выдает следующую ошибку «Предупреждение: ошибка при оценке: объект ‘plot2’ не найден».
График работает в Shiny, я не слишком знаком с Markdown, и я очень расстраиваюсь, так как чувствую, что перепробовал немало потенциальных решений. Что я делаю не так?
Блестящий пользовательский интерфейс
library(ggplot2)
library(tidyr)
library(DBI)
library(RODBCext)
library(shiny)
library(knitr)
library(kableExtra)
ui <- fluidPage(
pageWithSidebar(
headerPanel(""),
sidebarPanel(
textInput("Table", ""),
downloadButton("downloadData", "Download"),
submitButton(text="Submit"),
mainPanel(
tabsetPanel(
tabPanel("Data", tableOutput("tTable"))
),
tabsetPanel(
tabPanel("Graph", plotOutput("plot1")
)
)
)
Сервер Shiney
server <- function(input, output, session)
{
SQLData <- reactive({
#SQL Query
})
output$tTable <- renderTable(SQLData())
output$plot1 <- renderPlot({
da <- gather(SQLData(), key=Result, 'Control', 'Sample'
)
da2 <- data.frame(da)
ggplot(da2,aes(x=Result,y=Control, color=Result)) geom_point(size = 5) scale_y_continuous(limits = c(80, 120)) labs(y="", x = "")})
output$downloadData <- downloadHandler(
filename = "report.pdf",
content = function(file)
{ params <- list(table = SQLData(),
plot2 = {
da <- gather(SQLData(), key=Result, 'Control', 'Sample'
)
da2 <- data.frame(da)
ggplot(da2,aes(x=Result,y=Control, color=Result)) geom_point(size = 5) scale_y_continuous(limits = c(80, 120)) labs(y="", x = "")})}
)
rmarkdown::render(input = "Report.Rmd",
output_file = file,
params = params,
envir = new.env(parent = globalenv())
)
}
)
}
shinyApp(ui = ui, server = server)
Отчет R Markdown
---
title: "Report"
output: pdf_document
header-includes:
- usepackage{float}
- usepackage{booktabs}
- usepackage{makecell}
params:
table: NA
plot2: NA
---
```{r echo = FALSE, eval = TRUE}
kable(params$table, format="latex", booktabs=TRUE) %>%
kable_styling(latex_options="scale_down")
```{r echo = FALSE, eval = TRUE}
library(ggplot2)
print(plot2)
Комментарии:
1.…
print(params$plot2)
?2. Да, я идиот. Большое спасибо!