Backend - Как сделать файл csv с результатами доступным для загрузки в SHINY?

Как сделать файл csv, написанный с использованием приведенного ниже кода, доступным для загрузки пользователю? Как пользователь получит этот файл с помощью кнопки загрузки? write.csv (csv_write, file = "test.csv", row.names = FALSE, na = "")


person Ayan Saraf    schedule 20.07.2017    source источник
comment
Быстрый поиск дает shiny.rstudio.com/articles/download.html   -  person Remko Duursma    schedule 20.07.2017
comment
Мой вторичный сценарий R решает проблему и предоставляет решение в виде файла CSV. Я просто хочу знать, как сделать этот файл CSV доступным для загрузки. По ссылке показано, как загрузить данные из уже существующей базы данных в R. Спасибо за помощь! :)   -  person Ayan Saraf    schedule 20.07.2017
comment
Если вы используете DT в своем shinyapp, вы можете использовать расширение кнопок. Ознакомьтесь с расширениями здесь: rstudio.github.io/DT/extensions.html. Его легко реализовать, по моему опыту, он более удобен для пользователя, и вы можете организовать их как хотите, используя extend = collections и поместив все желаемые кнопки в список.   -  person Asayat    schedule 21.07.2017


Ответы (1)


В своей серверной функции вы можете написать обработчик загрузки:

output$downloadData5 <- downloadHandler(
    filename = function() {'test.csv'},
    content = function(file) {
      write.delim(ftext(), file, row.names = FALSE,sep="\t")
    }
  )

Где ftext () - это функция, которая возвращает ваш фрейм данных, который вы хотите загрузить как csv.
В вашем пользовательском интерфейсе будет функция dashboardBody (), в которой вы можете иметь кнопку загрузки:

 tabPanel('First Touch Point Campaign Level', 
                 downloadButton('downloadData5', 'Download This Data !!',
                                style="display: block; margin: 0 auto; width: 230px;color: black;"),
                 dataTableOutput('datatable5'))   

ftext () - это реактивная функция, которая возвращает фрейм данных. Код выглядит так:

 ftext <- eventReactive(input$goButton, {
    df =   data.frame(replicate(10,sample(0:1,10,rep=TRUE)))     
    return(df)
  })
person anarchy    schedule 20.07.2017
comment
Спасибо @Abhishek Kumar за оперативный ответ. Что будет в функции ftext (), с помощью которой она вернет файл csv, доступный для загрузки? - person Ayan Saraf; 20.07.2017
comment
Спасибо. Это помогает. Но что такое write.delim? - person Ayan Saraf; 20.07.2017
comment
Это похоже на write.csv, но вместо значений, разделенных запятыми, вы можете иметь значения, разделенные любым разделителем. Вы также можете использовать write.csv - person anarchy; 20.07.2017