R 正在下载文件

R 正在下载文件,r,shiny,R,Shiny,我想让用户下载一个文件,该文件是表格格式,带有标题以及顶部的两个搜索小部件。输出是预测值以及80%(高-低)和95%(高-低)置信区间。因此有五列五行(默认值)。然而,我在这里面临两个挑战 挑战1: 当我运行应用程序时,在点击“下载文件”后,文件名将作为下载数据出现,没有扩展名,而我提到的文件名应该是带有png扩展名的“Forecast”,应该是forecated.png 挑战2:在保存文件时键入png作为扩展名后,文件将被保存,但不会打印任何内容 我在各种论坛上搜索并试图复制它们,但似乎没有任

我想让用户下载一个文件,该文件是表格格式,带有标题以及顶部的两个搜索小部件。输出是预测值以及80%(高-低)和95%(高-低)置信区间。因此有五列五行(默认值)。然而,我在这里面临两个挑战

挑战1: 当我运行应用程序时,在点击“下载文件”后,文件名将作为下载数据出现,没有扩展名,而我提到的文件名应该是带有png扩展名的“Forecast”,应该是forecated.png

挑战2:在保存文件时键入png作为扩展名后,文件将被保存,但不会打印任何内容

我在各种论坛上搜索并试图复制它们,但似乎没有任何效果

请建议

闪亮用户界面

library(shiny)    
downloadButton(outputId = "downloaddata" ,label ="Download the file"),
闪亮服务器

output$downloaddata<-downloadHandler(

    filename = function(){
      paste("forecasted","png",sep=",")
    },
    content = function(file){
      png(file)
      h <-input$fst
      tab<-forecast(Model_mape(),h) 
      datatable(as.data.frame(tab), options = list(
         columnDefs = list(list(targets = c(1, 3), searchable = FALSE)),
         pageLength = 10))
      dev.off()

    }

  )
output$downloaddata也许它可以帮助您(这是一个简单的实例):

用户界面:

服务器:

library(shiny)

shinyServer(function(input, output) {
  your_plot = function(){
    (plot(rnorm(1000,0,1)))
  }


  output$plot1 <- renderPlot({
    your_plot()
  })

  output$downloadplot <- downloadHandler(
    filename = "plot_exemple.png",
    content = function(file) {
      png(file, width = 1200, height = 800)
      print(your_plot())
      dev.off()
    })

  })
库(闪亮)
shinyServer(功能(输入、输出){
你的图=函数(){
(图(rnorm(1000,0,1)))
}

输出$plot1有些时候你需要在浏览器中打开应用程序来下载绘图和数据集我自己无法尝试,但是
png()
dev.off()
之间的代码是否真的绘制了一些东西。我看不到任何明显的函数可以这样做。你能把整个代码放进去吗?我们可以运行它并找到你的问题(例如,我们需要您要下载的绘图或数据)您可能希望在
filename
函数中使用句点而不是逗号。事实上,如果这是您的实际代码,只需使用
filename=function()“predicted.png”
@Jarko-typeldam yes,它会在Rstudio的绘图选项卡中绘图。
library(shiny)

shinyServer(function(input, output) {
  your_plot = function(){
    (plot(rnorm(1000,0,1)))
  }


  output$plot1 <- renderPlot({
    your_plot()
  })

  output$downloadplot <- downloadHandler(
    filename = "plot_exemple.png",
    content = function(file) {
      png(file, width = 1200, height = 800)
      print(your_plot())
      dev.off()
    })

  })