退出时删除动态创建的目录
Delete a dynamically created directory on exit
我有一个在 shiny 会话期间动态创建的目录。目录名称和路径在反应值内。如何在退出会话时删除此目录?
工作示例:
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
)。
来自?reactiveValues
:
If not in a reactive context (e.g., at the console), you can use
isolate() to retrieve the value:
你应该能够在 isolate
中围绕你的反应值来获得它的价值,即使你不在反应性环境中也是如此:
session$onSessionEnded(function() {
unlink(isolate(rv$newpath),recursive=TRUE)
})
我有一个在 shiny 会话期间动态创建的目录。目录名称和路径在反应值内。如何在退出会话时删除此目录?
工作示例:
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
)。
来自?reactiveValues
:
If not in a reactive context (e.g., at the console), you can use isolate() to retrieve the value:
你应该能够在 isolate
中围绕你的反应值来获得它的价值,即使你不在反应性环境中也是如此:
session$onSessionEnded(function() {
unlink(isolate(rv$newpath),recursive=TRUE)
})