1

我创建了一个 Shiny 应用程序,它将 .csv 文件作为输入并根据 Grade 列生成选项卡。

数据看起来像这样

Name    Age Score Grade
Jane    13  89    A
Hanna   14  67    B
Jack    13  80    A
Leena   14  78    B
Amy     12  65    B
Nina    14  90    A
Steven  12  45    C
Omy     13  59    C

代码将在每个选项卡中生成表,其中仅包含与成绩匹配的数据集行。这些表是可编辑的。我正在尝试从活动的 tabPanel 下载已编辑的表格,但我被困在 downloadHandler 中的内容应该是什么。我附上了我的代码以供参考。抱歉代码乱七八糟,我对闪亮还是很陌生。

library(shiny)
library(xlsx)
library(rhandsontable)

ui <- fluidPage(  
    titlePanel("Scores"),  
    sidebarLayout(    
        sidebarPanel(      
            fileInput("file", "Upload the file"),      
            br(),     
            downloadButton('downloadData', 'Save as excel')   
        ),    
        mainPanel(uiOutput("op"))  
      )
    )

server <- function(input, output, session) {
    data <- reactive({  
        file1 <- input$file   
        if (is.null(file1)) {
                  return()   
        }
          read.csv(file = file1$datapath) 
    })  

    fun1 <- function(x) {
            mydf <- data()
            DF <- mydf[(mydf$Grade == x), c(1:3)]
            table <- renderRHandsontable({
                  newtable<- rhandsontable(DF, rowHeaders = NULL)
            })
           tabPanel(x, table)
    }

    output$op <- renderUI({
            if (is.null(data()))
                 helpText("File not uploaded!")
            else{
                mydf <- data()
                Tabs <- lapply((unique(mydf$Grade)), fun1)
                do.call(tabsetPanel, c(id = "tabs", Tabs))
        }
    })

    output$downloadData <- downloadHandler(
       filename = function() {
          'Edited table.xls'
       },
        # what should go in place of table
       content = function(file) {
           write.xlsx(table, file)
        }
     )  
   }

shinyApp(ui, server)
4

0 回答 0