Настроить имя файла для загрузки расширений кнопки

Я чувствую себя немного глупо, задавая все эти основные вопросы, но я не смог найти ничего по этому поводу. Я хотел бы разрешить моим пользователям давать имя файлу, когда они нажимают кнопку «excel» для моей таблицы. Либо открывается диалог загрузки, либо другой пользовательский интерфейс, где можно ввести имя. Это возможно? На данный момент имя совпадает с тегом приложения.

rm(list=ls()) 
library(shiny)
library(datasets)
library(DT)
library(data.table)
DT<-data.table(matrix(abs(rnorm(600*40,sd=100)),nrow=600))

server<-shinyServer(function(input, output) {
  output$view <- DT::renderDataTable(
    DT[,.SD],extensions = c( 'FixedHeader','Buttons'),
      options=list(pageLength=60,fixedHeader = TRUE,dom = 'Bfrtip',buttons = c( 'csv', 'excel'  )))
}) 

ui<-shinyUI(fluidPage(
  titlePanel("Shiny MWE"),
        DT::dataTableOutput("view")
    ))

runApp(list(ui=ui,server=server))

person Max M    schedule 24.08.2016    source источник
comment
Я не верю, что это возможно. Имя файла является параметром в параметрах: github.com/rstudio/DT/ issues / 343 # issuecomment-239600594, а параметры не являются реактивными, поэтому вам придется перерисовывать таблицу каждый раз при изменении имени файла.   -  person Carl    schedule 25.08.2016
comment
Но тогда я могу добавить параметр имени файла где-нибудь, чтобы выбрать другое имя?   -  person Max M    schedule 25.08.2016
comment
Да, отправлю ответ перед компьютером   -  person Carl    schedule 25.08.2016


Ответы (1)


Вы можете сделать реактивный datatable, а затем передать его renderDataTable, но он будет обновляться каждый раз, когда вы меняете имя файла:

rm(list=ls()) 
library(shiny)
library(datasets)
library(DT)
library(data.table)
DT<-data.table(matrix(abs(rnorm(600*40,sd=100)),nrow=600))

server<-shinyServer(function(input, output) {

  dt <- reactive({
    DT::datatable(DT[,.SD],extensions = c( 'FixedHeader','Buttons'),
    options=list(pageLength=60,fixedHeader = TRUE,dom = 'Bfrtip',
                 buttons = list("csv",list(extend='excel',filename=input$filename))))
  })

  output$view <- DT::renderDataTable(
    dt(),server=FALSE
    )
}) 

ui<-shinyUI(fluidPage(
  titlePanel("Shiny MWE"),
  textInput("filename","Enter file name"),
  DT::dataTableOutput("view")
))

runApp(list(ui=ui,server=server))
person Carl    schedule 25.08.2016
comment
Тем временем, спасибо, я переключился на Download Handler, в том числе потому, что мое приложение стало замедляться при использовании параметра server = FALSE. - person Max M; 25.08.2016