【问题标题】:How to modifiy a file in real time using shiny?如何使用闪亮实时修改文件?
【发布时间】:2023-04-01 17:30:01
【问题描述】:

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

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()})  
      
    }
))

有什么想法吗?

非常感谢,

【问题讨论】:

  • 查看here。您应该使用reactiveVal()reactiveValue() 而不是reactive()

标签: r file-upload shiny


【解决方案1】:

正如@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})  
    }
  ))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多