如何使用 shiny 实时修改文件?

How to modifiy a file in real time using shiny?

我想创建一个闪亮的应用程序来做两件事。首先它必须能够上传 XLS 文件,然后用户可以添加一些列(在这种情况下,只是列“Tecnico”),但目前我无法做到这一点。一旦用户写入列的值并更新 table,应用程序就会崩溃。

library(shiny)
library(readxl)

runApp(
  list(
    ui = fluidPage(
      titlePanel("Use readxl"),
      sidebarLayout(
        sidebarPanel(
          fileInput('file1', 'Choose xlsx file',
                    accept = c(".xlsx")),textInput("tecnix","Tecnico"),
        actionButton("go", "update")),
        mainPanel(
          tableOutput('my_output_data'))
      )
    ),
    server = function(input, output){
      
      data1 <- reactive({
        inFile <- input$file1
        if (is.null(inFile)){return(NULL)}
       
        isolate({ 
          input$file1
          my_data <- read_excel(inFile$datapath)
        })
        my_data
      })
      
      observeEvent(input$go, {
         data1()$Técnico <- input$tecnix
        })
      
      output$my_output_data <- renderTable({data1()})  
      
    }
))

有什么想法吗?

非常感谢,

@Till 建议使用 reactiveValues 将有助于解决问题。

library(shiny)
library(readxl)

runApp(
  list(
    ui = fluidPage(
      titlePanel("Use readxl"),
      sidebarLayout(
        sidebarPanel(
          fileInput('file1', 'Choose xlsx file',
                    accept = c(".xlsx")),textInput("tecnix","Tecnico"),
          actionButton("go", "update")),
        mainPanel(
          tableOutput('my_output_data'))
      )
    ),
    server = function(input, output){
      rv <- reactiveValues(my_data = NULL)
      
      observeEvent(input$file1, {
        req(input$file1$datapath)
        rv$my_data <- read_excel(input$file1$datapath)
      })
      
      observeEvent(input$go, {
        rv$my_data$Techni <- input$tecnix
      })
      output$my_output_data <- renderTable({rv$my_data})  
    }
  ))