#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. Я попробую это!