Rshiny Сохранение реактивной мощности при необходимости - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь загрузить данные по каждому выбору пользователя в Excel (на разных вкладках).

Ниже приведен мой запрос - Когда пользователь нажимает «Загрузить это представление», выходная таблица должна быть сохранена в Отличник Точно так же, когда пользователь выбирает другие опции, снова при нажатии на Download This View, выходная таблица должна быть сохранена в другой вкладке. Я пробовал вывод материала и списка, но получаю ошибку при разборе имени файла в списке. Примечание: я пытаюсь это сделать на Rserver.

i=1
library(writexl)
library(shiny)
library(shinyWidgets)
library(shinythemes)
library(shinydashboard)
library(openxlsx)
library(DT)
library(dplyr)
ui <- fluidPage(
  sidebarPanel(
    fluidRow(    column(  width = 10,
                          tags$h3("Select Filters"),
                          panel(  selectizeGroupUI(
                            id = "my-filters1",
                            inline = F,
                            params = list(
                              cyl = list(inputId = "cyl", title = "cyl",multiple=TRUE),
                              gear = list(inputId = "gear", title = "gear",multiple=TRUE),
                              carb = list(inputId = "carb", title = "carb",multiple=TRUE)
                            )
                          ), status = "primary"))),
    pickerInput("filter", "Select",multiple = TRUE,options = list(
      `actions-box` = TRUE),c("gear","carb","gear"),selected = c("gear"))



    ),
  mainPanel(
  downloadButton("dl", "Download"),

  materialSwitch(
    inputId = "upMaterial",
    label = "Download this view")),textAreaInput("caption", "Sheetname", "Output", width = "150px",height=40),
  dataTableOutput("data1")
)
server <- function(input, output) {

  res_mod1 <- callModule(
    module = selectizeGroupServer,
    id = "my-filters1",
    data = mtcars,
    vars = c("cyl","gear","carb")

  )


  base_data <- reactive({ 
    res<- mtcars

    #res$Settlement.Amount.GBP<-ifelse(is.na(res$Settlement.Amount),0,res$Settlement.Amount) 
    if (!(is.null(input$`my-filters1-cyl`))) res<-filter(res, (cyl) == input$`my-filters1-cyl`)
    if (!(is.null(input$`my-filters1-gear`))) res<-filter(res, (gear) == input$`my-filters1-gear`)
    if (!(is.null(input$`my-filters1-carb`))) res<-filter(res, (carb) == input$`my-filters1-carb`)

    res2<- res%>% select(input$filter,mpg)%>%
      group_by(!!!rlang::syms(input$filter)) %>% 
      summarise_at(vars(mpg),funs(sum))


    res2
  }) 


 # my_workbook <- createWorkbook()

  #materialswdata<-reactive({

    if (input$upMaterial ==TRUE){
     eval(parse=paste(data,i,sep="_"))<-base_data()
     browse()
      if (i==1)   

       { data_list <- reactive({
        list(
          paste(data,i,sep="_")=  eval(parse=paste(data,i,sep="_"))
        )
      })}

      if (i!=1)
       {


        data_list <- reactive({
          list.append(data_list (),
            paste(data,i,"_")=  eval(parse=paste(data,i,"_"))
          )
        })   
        }



    i=i+1
    updateMaterialSwitch(session,upMaterial,value = F)

    }



  #})


  output$data1 <- DT::renderDataTable(datatable(base_data()))

  output$dl <- downloadHandler(
    filename = function() { "ae.xlsx"},
    content = function(file) {write_xlsx(data_list(), path = file)}
  )
}
shinyApp(ui, server)


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...