退出时删除动态创建的目录

时间:2018-08-08 20:14:01

标签: r shiny shiny-reactivity

我有一个在闪亮会话期间动态创建的目录。目录名称和路径在反应值内。退出会话后如何删除此目录?

工作示例:

library("shiny")

ui <- fluidPage(
  verbatimTextOutput("display")
)
server <- function(input,output,session) {

  rv <- reactiveValues(newpath="./temporary")

  fnr <- reactive({
    dir.create(rv$newpath)
    return(paste("Directory created"))
  })

  output$display <- renderPrint({
    fnr()
  })

  session$onSessionEnded(function() {
    unlink(rv$newpath,recursive=TRUE)
    ##unlink("./temporary",recursive=TRUE)
  })
}
shinyApp(ui=ui, server=server)

这会导致错误,因为在响应上下文之外调用了响应值(rv$newpath)。

1 个答案:

答案 0 :(得分:1)

来自?reactiveValues

  

如果不在反应式上下文中(例如在控制台上),则可以使用   isolate()检索值:

即使您不在被动环境中,您也应该能够将自己的被动值括在isolate中以获取其价值:

session$onSessionEnded(function() {
    unlink(isolate(rv$newpath),recursive=TRUE)
})