R 在ShinyApp中使用下载处理程序下载数据时出现问题

R 在ShinyApp中使用下载处理程序下载数据时出现问题,r,datatables,shiny,shiny-server,dt,R,Datatables,Shiny,Shiny Server,Dt,我的mtcar原始数据使用ShinyApp中的下载处理程序下载,而我希望修改后的数据(使用SelectInputs)通过处理程序下载。 我也附上了我的代码,请让我知道它们有什么问题。非常感谢:) 库(闪亮) 图书馆(tidyr) 图书馆(dplyr) 图书馆(readr) 图书馆(DT) 数据表您正在更新数据()仅在您的渲染数据表中。您需要将其设置为反应式,然后将其作为DataTable呈现并下载。 将服务器更改为: # Define server logic server <- func

我的mtcar原始数据使用ShinyApp中的下载处理程序下载,而我希望修改后的数据(使用SelectInputs)通过处理程序下载。 我也附上了我的代码,请让我知道它们有什么问题。非常感谢:)

库(闪亮)
图书馆(tidyr)
图书馆(dplyr)
图书馆(readr)
图书馆(DT)

数据表您正在更新
数据()
仅在您的
渲染数据表中。您需要将其设置为反应式,然后将其作为DataTable呈现并下载。
将服务器更改为:

# Define server logic
server <- function(input, output) {

  thedata <- reactive({
    if(input$cyl != 'All'){
      return(data_table[data_table$cyl == input$cyl,])
    }
    else{
      return(data_table)
    }
  })

output$ex1 <- DT::renderDataTable(DT::datatable(filter = 'top',
                                                  escape = FALSE, 
              options = list(pageLength = 10, scrollX='500px',autoWidth = TRUE),{
                                 thedata() # Call reactive thedata()
                               }))


output$downLoadFilter <- downloadHandler(
    filename = function() {
      paste('Filtered data-', Sys.Date(), '.csv', sep = '')
    },
    content = function(path){
      write_csv(thedata(),path) # Call reactive thedata()
    })}
#定义服务器逻辑

非常感谢你,伙计,我已经按照你的建议更新了代码(在顶部)。然而,我在使用elseif语句过滤vs列时遇到了一个问题。你能看一下吗?非常感谢数据谢谢伙计,我试过运行它,但当你在SelectInput中输入'cyl=All',然后将'vs'更改为任何值时,它就不起作用了。不要删除原始答案的代码,其他人将来需要你的问题,如果需要,请添加第二部分。我将新问题的代码放在Vishesh Shrivastav answer的注释中。
# Define server logic
server <- function(input, output) {

  thedata <- reactive({
    if(input$cyl != 'All'){
      return(data_table[data_table$cyl == input$cyl,])
    }
    else{
      return(data_table)
    }
  })

output$ex1 <- DT::renderDataTable(DT::datatable(filter = 'top',
                                                  escape = FALSE, 
              options = list(pageLength = 10, scrollX='500px',autoWidth = TRUE),{
                                 thedata() # Call reactive thedata()
                               }))


output$downLoadFilter <- downloadHandler(
    filename = function() {
      paste('Filtered data-', Sys.Date(), '.csv', sep = '')
    },
    content = function(path){
      write_csv(thedata(),path) # Call reactive thedata()
    })}