1

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

工作示例:

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反应上下文之外调用了反应值 ( )。

4

1 回答 1

2

来自?reactiveValues

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

isolate即使您不在响应式上下文中,您也应该能够将您的响应式值包围起来以获取它的值:

session$onSessionEnded(function() {
    unlink(isolate(rv$newpath),recursive=TRUE)
})
于 2018-08-08T20:20:01.090 回答