如何清除fileInput数据和相应的对象在R Shiny?



在查看了一些现有的解决方案后,我仍然无法解决这个问题。

我想删除在我闪亮的应用程序按下sign_out按钮后上传的每一个数据(当然也注销了用户)。

上传数据,我使用file_input()命令在Shiny.

fileInput("file1", "Choose CSV File",
multiple = FALSE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv", "space"))

基于此输入的相应数据对象称为df:


output$contents <- renderTable({
req(input$file1)
df <- read.csv(input$file1$datapath,
header = input$header,
sep = input$sep,
quote = input$quote)
})

我目前删除这个的方法如下:


observeEvent(input$sign_out, {
df <- NULL 
reset(id = "") # from shinyjs package 
f$sign_out()
output$test <- renderTable({
df()})

})

输出的$test对象显示重新登录后"df">

希望你能帮助我,提前谢谢你。

所以我想我可以解决这个问题。我没有将任何响应值设置为NULL,而是删除了csv。上传数据时创建的文件。

关键函数是unlink

observeEvent(input$sign_out, {
unlink(input$file1$datapath)
reset(id = "") # from shinyjs package
})

你可以做的是,首先,在代码的开头,添加这行代码:

values <- reactiveValues(uploadedData = NULL)

其次,你应该修改renderTable()函数,用values$uploadedData代替df:

renderTable({
req(input$file1)
values$uploadedData <- read.csv(input$file1$datapath,
header = input$header,
sep = input$sep,
quote = input$quote)

同时,必须替换

output$test <- renderTable({ df() })

用这行代码:

output$test <- renderTable({ values$uploaded_data }) 

最后,当用户注销时,清空uploadedData,通过将值$uploadedData()设置为NULL来修改observeEvent():

observeEvent(input$sign_out, {
values$uploadedData <- NULL 
reset(id = "") # from shinyjs package 
f$sign_out()
})

试试这个,让我知道这是否适合你。

相关内容

  • 没有找到相关文章

最新更新