代码之家  ›  专栏  ›  技术社区  ›  mindlessgreen

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

  •  0
  • mindlessgreen  · 技术社区  · 6 年前

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

    工作示例:

    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 回复  |  直到 6 年前
        1
  •  1
  •   divibisan    6 年前

    ?reactiveValues :

    如果不是在被动上下文中(例如,在控制台),可以使用 isolate()检索值:

    你应该能把你的反应值 isolate 要获得它的价值,即使你不在被动的环境中:

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