downloadHandler не работает с наблюдать за событием - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь загрузить файл с помощью downloadHandler с наблюдать за событием блестящим, но я не могу загрузить файл,

    library(shiny)

load(url("http://s3.amazonaws.com/assets.datacamp.com/production/course_4850/datasets/movies.Rdata"))


   ui <- fluidPage(
    sidebarLayout(

    # Input
    sidebarPanel(

      # Numeric input for number of rows to show
      numericInput(inputId = "n_rows",
                   label = "How many rows do you want to see?",
                   value = 10),

      # Action button to show
      actionButton(inputId = "button", 
                   label = "Show")

    ),

    # Output:
    mainPanel(
      tableOutput(outputId = "datatable")

    )
  )
)


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

  # creating a reactive expression
  df <- eventReactive(input$button, {
    movies %>% head(input$n_rows)
  })

  # download a csv  everytime when user click on show button
  observeEvent(input$button, {
    output$button <- downloadHandler(
      filename = function() {
        paste("data-", Sys.Date(), ".csv", sep="")
      },
      content = function(file) {
        write.csv(df(), file)
      }
    )
    cat("done downloading file  \n")
  })

  # displays the data on the web in tabular format, data comes from reactive event
  output$datatable <- renderTable({
    df()
  })
}

# Create a Shiny app object
shinyApp(ui = ui, server = server)

Мне не удалось выполнить вышеуказанный код без каких-либо ошибок, но CSV-файл незагружая, я хочу отобразить таблицу данных и загрузить отображаемые данные для одного и того же события нажатия кнопки, как я могу этого достичь, я что-то упустил, любая помощь будет принята

1 Ответ

0 голосов
/ 29 декабря 2018

Попробуйте это:

library(shiny)
library(dplyr)
load(url("http://s3.amazonaws.com/assets.datacamp.com/production/course_4850/datasets/movies.Rdata"))


ui <- fluidPage(
  sidebarLayout(

    # Input
    sidebarPanel(

      # Numeric input for number of rows to show
      numericInput(inputId = "n_rows",
                   label = "How many rows do you want to see?",
                   value = 10),

      # Action button to show

      downloadButton('downloadData', 'Download data')

    ),

    # Output:
    mainPanel(
      tableOutput(outputId = "datatable")

    )
  )
)


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

  # Reactive value for selected dataset ----
  df <- reactive({
    movies %>% head(input$n_rows)
  })


  output$datatable <- renderTable({
    df()
  })

  output$downloadData <- downloadHandler(
    filename = function() { 
      paste("dataset-", ".csv", sep = "")
    },
    content = function(file) {
      write.csv(df(), file, row.names = FALSE)
    })
}

# Create a Shiny app object
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...