在查看了一些现有的解决方案后,我仍然无法解决这个问题。
我想删除在我闪亮的应用程序按下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()
})
试试这个,让我知道这是否适合你。