我不想指定单独的fileInput
变量,而是想reactiveValues
用来存储上传的 CSV 数据帧,以某种方式操作它们,然后存储它们以供以后访问。我的设计是通过文件名命名每个数据帧并附加到 reactiveValue rvTL
。我的问题是,
- 如何访问我使用创建的列表下的各个数据框
reactiveValuesToList(rvTL)
? - 下一步,如何创建一个
selectInput
菜单来访问由fileInput
为了学习这个概念,我借鉴了 Dean Attali 的答案,并rvTL
与他的values
变量相同。
R闪亮:如何在每次按下actionButton而不创建新的反应数据框的情况下更新反应数据框?
我已经浏览了许多示例代码reactiveValues
,但仍然不完全理解。大多数示例都在 R Shiny 上使用某种变体reactiveValuesToList(input)
:在修改选择后保留/保留反应输入的值,我真的没有看到这里的逻辑。任何帮助/建议将不胜感激!
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)
})
))