4

我在 Shiny Google 群组上问过这个问题,但是一旦发布它就会立即被删除,我不知道为什么。

所以我在这里问这个问题。

我知道如何上传从 Shiny 应用程序创建的文件,但我花了几个小时没有成功地找到如何将文件保存在硬盘上。请问你能告诉我一个方法吗?例如,我想保存使用 sink() 创建的文件或 RData 文件。

以下是我众多尝试之一的(人工)示例。sweaveSave() 函数不起作用。请不要关注情节,它在我的问题中不起作用。

服务器.R

library(shiny)
##
## function creating a Sweave report 
##
createReport <- function(file){
        sink(file) 
        cat(
"\\documentclass{article}\n
\\begin{document}\n
\\SweaveOpts{concordance=TRUE}
This is the Rnw file.\n
<<fig=TRUE>>=
plot(0,0)
@\n
\\end{document}\n") 
        sink()
}

##
## Shiny server
##
shinyServer(function(input, output) {
    ##
    ## Create plot 
    ##
    createPlot <- reactive({
        # generate an rnorm distribution and plot it
        titl <- paste0("Exponential distribution with rate ", round(input$parameter,2)) 
    curve(dexp(x,rate=input$parameter), from=0, to=5, main=titl, ylab=NA, xlab=NA)
        })
    ##
    ## output : plot
    ##
    output$distPlot <- renderPlot({
        createPlot()
    })
    ##
    ##  output : download Sweave file 
    ##
    output$sweavedownload <-   downloadHandler(
        filename="report00.Rnw",
        content = createReport
    )
    ##
    ## save Sweave file 
    ##
    sweaveSave <-   reactive({
        if(input$save){
                createReport("REPORT00.Rnw")
        }else{NULL}
    })
})

用户界面

library(shiny)
shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Hello Shiny!"),

  # Sidebar panel
  sidebarPanel(
    sliderInput("parameter", 
                "Rate parameter:", 
                min = 0.0000000001, 
                max = 10, 
                value = 5),
    checkboxInput("save", "Check to save and download")
  ),

  # Main panel
  mainPanel(
    plotOutput("distPlot"),
    conditionalPanel(
      condition = "input.save",
      downloadLink("sweavedownload", "Download")
    )
  )
))
4

1 回答 1

1

通过使用 shinyFiles 包,它让您的生活变得轻松。

install.package('shinyFiles') 
require(shinyFiles)
shinyFilesExample()
于 2016-01-20T04:09:21.640 回答