Вместо того, чтобы указывать отдельные fileInput
переменные, я хотел бы использовать reactiveValues
для хранения загруженных фреймов данных CSV, каким-либо образом управлять ими, а затем сохранять их для последующего доступа. Мой план состоит в том, чтобы назвать каждый фрейм данных по его имени файла и добавить его к reactiveValue rvTL
. Мои вопросы:
- Как я могу получить доступ к отдельным фреймам данных в списке, который я создал с помощью
reactiveValuesToList(rvTL)
? - Следующий шаг, как создать
selectInput
меню для доступа к отдельным фреймам данных, загруженнымfileInput
Чтобы изучить эту концепцию, я использовал ответ Дина Аттали и сделал rvTL
таким же, как его переменная values
. R блестящий : Как обновить реактивный фрейм данных каждый раз при нажатии кнопки действия без создания нового реактивного фрейма данных?
Я просмотрел много примеров кода на reactiveValues
, но все еще не понял. В большинстве примеров используется какая-то разновидность reactiveValuesToList(input)
R Shiny: сохранить / сохранить значения реактивных входов после изменения выбора, я действительно не вижу здесь логики. Любая помощь / предложения будут оценены!
library(shiny)
runApp(shinyApp(
ui=(fluidPage(
titlePanel("amend data frame"),
mainPanel(
fileInput("file", "Upload file", multiple=T),
tabsetPanel(type="tabs",
tabPanel("tab1",
numericInput("Delete", "Delete row:", 1, step = 1),
actionButton("Go", "Delete!"),
verbatimTextOutput("df_data_files"),
verbatimTextOutput("values"),
verbatimTextOutput("rvTL"),
tableOutput("rvTL_out")
),
tabPanel("tab2",
tableOutput("df_data_out")
)
)))),
server = (function(input, output) {
values <- reactiveValues(df_data = NULL) ##reactiveValues
rvTL <- reactiveValues(rvTL = NULL)
observeEvent(input$file, {
values$df_data <- read.csv(input$file$datapath)
rvTL[[input$file$name]] <- c(isolate(rvTL), read.csv(input$file$datapath))
})
observeEvent(input$Go, {
temp <- values$df_data[-input$Delete, ]
values$df_data <- temp
})
output$df_data_files <- renderPrint(input$file$name)
output$values <- renderPrint(names(values))
output$rvTL <- renderPrint(names(reactiveValuesToList(rvTL))[1] )
output$rvTL_out <- renderTable(reactiveValuesToList(rvTL)[[1]])
output$df_data_out <- renderTable(values$df_data)
})
))