2016년 8월 10일 수요일

generate report with shiny app and

I would like to create a shiny app that allows you to download a report. Right now i'm trying to keep things super simple and the only input on the shiny app is some text that the user can input using textarea:
library(shiny)
server <- function(input, output) {
  output$downloadReport <- downloadHandler(
    filename = function() {
      paste('my-report', sep = '.', switch(
        input$format, PDF = 'pdf', HTML = 'html', Word = 'docx'
      ))
    },
    content = function(file) {
      src <- normalizePath('report.Rmd')

      # temporarily switch to the temp dir, in case you do not have write
      # permission to the current working directory
      owd <- setwd(tempdir())
      on.exit(setwd(owd))
      file.copy(src, 'report.Rmd', overwrite = TRUE)

      out <- rmarkdown::render('report.Rmd',
                               params = list(text = input$text),
                               switch(input$format,
                                      PDF = pdf_document(), 
                                      HTML = html_document(), 
                                      Word = word_document()
                               ))
      file.rename(out, file)
    }
  )
}

ui <- fluidPage(
  tags$textarea(id="text", rows=20, cols=155, 
                placeholder="Some placeholder text"),

  flowLayout(radioButtons('format', 'Document format', c('HTML', 'Word'),
                          inline = TRUE),
             downloadButton('downloadReport'))

)

shinyApp(ui = ui, server = server)
and report.Rmd
---
title: "Parameterized Report for Shiny"
output: html_document
params:
  text: 'NULL'
---

# Some title

`r params[["text"]]`
http://stackoverflow.com/questions/37347463/generate-report-with-shiny-app-and

댓글 없음:

댓글 쓰기