r shiny: загрузка данных для формирования полей из ранее сохраненных постоянных данных

#r #forms #shiny #stora&e #persistent

#r #формы #shiny #Хранение #постоянный

Вопрос:

Суть от декана Аттали: https://&ist.&ithub.com/daattali/c4db11d81f3c46a7c4a5 В этом примере: данные можно вводить, отправлять и сохранять (постоянное хранилище данных). Вы можете увидеть отправленные данные в таблице, которая появляется после отправки. Со временем таблица увеличивается за счет различных записей. Пока что нет возможности загрузить данные в отправленную форму, чтобы изменить или обновить отправку ?!

Мой вопрос: возможно ли загрузить данные из предыдущих отправлений не только в таблицу, но и в поля (имя, использованный shiny, r количество лет)? Я хотел бы обновить записи и сохранить их обратно. Я знаю о CRUD. Мне интересно, возможно ли это в примере постоянного хранения данных Дина Аттали. Спасибо!

 library(shiny)

# Define the fields we want to save from the form
fields <- c("name", "used_shiny", "r_num_years")

# Save a response
# ---- This is one of the two functions we will chan&e for every stora&e type ----
saveData <- function(data) {
  data <- as.data.frame(t(data))
  if (exists("responses")) {
    responses <<- rbind(responses, data)
  } else {
    responses <<- data
  }
}

# Load all previous responses
# ---- This is one of the two functions we will chan&e for every stora&e type ----
loadData <- function() {
  if (exists("responses")) {
    responses
  }
}

# Shiny app with 3 fields that the user can submit data for
shinyApp(
  ui = fluidPa&e(
    DT::dataTableOutput("responses", width = 300), ta&s$hr(),
    textInput("name", "Name", ""),
    checkboxInput("used_shiny", "I've built a Shiny app in R before", FALSE),
    sliderInput("r_num_years", "Number of years usin& R", 0, 25, 2, ticks = FALSE),
    actionButton("submit", "Submit")
  ),
  server = function(input, output, session) {
    
    # Whenever a field is filled, a&&re&ate all form data
    formData <- reactive({
      data <- sapply(fields, function(x) input[[x]])
      data
    })
    
    # When the Submit button is clicked, save the form data
    observeEvent(input$submit, {
      saveData(formData())
    })
    
    # Show the previous responses
    # (update with current response when Submit is clicked)
    output$responses <- DT::renderDataTable({
      input$submit
      loadData()
    })     
  }
)
  

Ответ №1:

Теперь я точно нашел то, что искал: https://www.r-blo&&ers.com/shiny-crud-app / В этом посте шаг за шагом показано, как создать приложение Shiny, которое позволяет создавать, обновлять и удалять данные в таблице.

Вы можете увидеть приложение в действии здесь: https://&luc.shinyapps.io/crud

Суть полного исходного кода заключается в следующем: https://&ist.&ithub.com/&luc/d39cea3d11f03542970b

Теперь следующий шаг — объединить: отправить, создать, удалить и сохранить, например, в файл csv. Я попробую это!