在R Shiny App中添加加载并将数据保存到文本框

时间:2018-07-27 19:22:45

标签: r shiny textbox

我有下面的代码将文本框添加到Shinyapp,但是我希望用户能够加载以前的值并保存现有的值

我使用的代码是:

library(shiny)

ui <- shinyUI(fluidPage(

  sidebarPanel(

    actionButton("add_btn", "Add Textbox"),
    actionButton("rm_btn", "Remove Textbox")
  ),

  mainPanel(uiOutput("textbox_ui"))

))

server <- shinyServer(function(input, output, session) {


  counter <- reactiveValues(n = 0)

  observeEvent(input$add_btn, {counter$n <- counter$n + 1})
  observeEvent(input$rm_btn, {
    if (counter$n > 0) counter$n <- counter$n - 1
  })

  textboxes <- reactive({

    n <- counter$n

    if (n > 0) {
      lapply(seq_len(n), function(i) {
        textInput(inputId = paste0("textin", i),
                  label = paste0("Textbox", i), value = "Hello World!")
      })
    }
  })

  output$textbox_ui <- renderUI({ textboxes() })

})

shinyApp(ui, server)

我找到了下面的代码,这些代码增加了加载并保存到文本框中,但是我不确定如何将两者组合在一起

ui <- shinyUI(fluidPage(

  textInput(inputId = 'inputsLocation', label = 'Inputs Location', value = "C:/Users/dvora/Downloads/user_inputs.csv"),
  actionButton('load_inputs', 'Load inputs'),
  br(),
  br(),
  textInput("textbox_ui", "Text"),
  actionButton('save_inputs', 'Save inputs')

)) 

server <-  shinyServer(function(input, output,session) {

  observeEvent(input$load_inputs, {
    # Load inputs
    uploaded_inputs <- read.csv(input$inputsLocation)
    # Update each input
    for(i in 1:nrow(uploaded_inputs)){
      updateNumericInput(session,
                         inputId = uploaded_inputs$inputId[i],
                         value = uploaded_inputs$value[i])
    }
  })

  observeEvent(input$save_inputs, {
    # Define inputs to save
    inputs_to_save <- c('textbox_ui')
    # Declare inputs
    inputs <- NULL
    # Append all inputs before saving to folder
    for(input.i in inputs_to_save){
      inputs <- append(inputs, input[[input.i]])
    }
    # Inputs data.frame
    inputs_data_frame <- data.frame(inputId = inputs_to_save, value = inputs)
    # Save Inputs
    write.csv(inputs_data_frame, file = input$inputsLocation, row.names = FALSE)
  }) 

})

shinyApp(ui=ui,server=server)

如果我的输出中只有一个文本框可以加载并保存

0 个答案:

没有答案