Блестящее приложение: downloadHandler не создает файл

Я не могу понять, что происходит - все работает, но мое приложение не создает файл, хотя похоже, что это так. Я запускаю его в Windows, на RStudio 0.98.125, и я запускаю его, используя строку: runApp() Ниже приведен очень простой воспроизводимый пример:

my 'ui.R':

shinyUI(pageWithSidebar(

  headerPanel("My App"),

  sidebarPanel(
    numericInput('NumRuns','Number of runs',value=3,min=3,max=10,step=1),

    actionButton(inputId="goButton","Run!"),

    textInput("downloadData","Save My Data Frame:",value="Data Frame 1"),
    downloadButton('downloadData','Save my file!')

  ),

  mainPanel(
    tabPanel("Some Text",
             h4(textOutput("caption2")),
             tableOutput("mydf"),
             value=3))
  ))

my 'server.R':

shinyServer(function(input,output){

  # Creating files for download at the end

  myout = reactive({
    if(input$goButton==0) return(NULL)

      nrruns=input$NumRuns
      mylist=NULL
      for(i in 1:nrruns){
        mylist[[i]]<-data.frame(a=rnorm(10),b=runif(10))
        names(mylist)[i]<-paste("dataframe",i,sep="")
      }
      return(mylist)
  })

     output$mydf <- renderTable({
     if(input$goButton==0) return(NULL)
     input$goButton
     isolate(
       myout()$dataframe1
     )
   })

  output$downloadData <- downloadHandler(
    filename = function() { paste(input$downloadData, " ",Sys.Date(),".csv",sep="") },
    content = function(file) {
      write.csv(myout()$dataframe1,file,row.names=F)
    }
  )

})

Ответы

Ответ 1

Примечание. Кнопка загрузки не работает в средстве просмотра RStudio. Ваш друг может использовать средство просмотра RStudio для просмотра приложения. Если это в случае, пожалуйста, откройте приложение во внешнем веб-браузере (есть выпадающий список справа от кнопки "Запустить приложение": "Запустить в окне", Запуск в панели просмотра, запуск внешнего; выберите последний).

Ответ 2

Приведенный пример отлично подходит для загрузки CSV в моих тестах (если это из веб-браузера, который является, используя приложение "Запуск" в RStudio, вызывают такую ​​же проблему)

Обратите внимание, что если вы сохраняете что-то вроде "download.html" из вашей кнопки загрузки вместо загруженного контента, вы должны убедиться, что идентификатор из downloadButton ( "myIdHere",...) соответствует выходу $myIdHere = downloadHandler ( "output.csv",...)

Также обратите внимание, что если вы используете блестящие модули (вы, вероятно, знаете, используете ли вы это), то вы хотите использовать downloadButton (ns ( "myIdHere" ),...), а затем у вас все еще есть выход $myIdHere

Ответ 3

Проблема заключается в том, что вы определяете имя файла как функцию, тогда как функция downloadHandler ожидает аргумент имени файла как строку.

Попробуйте это вместо:

 output$downloadData <- downloadHandler(
    filename = paste0("download_", Sys.Date(),".csv"),
    content = function(file) {
      write.csv(myout()$dataframe1,file,row.names=F)
    }
  )

Ответ 4

Добавление к тому, что сказал Колин Д. Это может быть просто, что ваш idNAME слишком длинный.

Я только что тестировал в своем приложении, что ЭТО РАБОТАЕТ:

     output$download_mastergroup <- downloadHandler(...)   #server side
     downloadButton('download_mastergroup ', 'Download overview') #ui side

и что ЭТО НЕ РАБОТАЕТ:

     output$download_mastergroup_overview <- downloadHandler(...)   #server side
     downloadButton('download_mastergroup_overview ', 'Download overview') #ui side

Итак, будьте краткими, и все будет хорошо!