r-如何保存ShinyFiles目录输入的basename以传递到函数中



如何从ShinyFiles目录按钮中仅获取选定的目录名?我看了这篇文章,另一个SO问题,得到了它来显示verbatimTextOutput中的完整路径,但我只想要目录名。我试着像message()print()一样打印到控制台。它同时打印了一些奇怪的整数。我尝试了isolate(reactiveValuesToList(base_name))dir()$path[[2]];I’我不成功。

1                                                            
[1] 1                                                        
attr(,"class")                                               
[1] "integer"                "shinyActionButtonValue"         
list("", "flowCyt_pdfs")home                                  
$path                                                        
$path[[1]]                                                    
[1] ""                                                        
$path[[2]]                                                    
[1] "flowCyt_pdfs"                                            
$root                                                         
[1] "home"                                                   
Warning: Error in $: $ operator is invalid for atomic vectors
library(shiny)
library(shinyFiles)

ui <- fluidPage(
navbarPage(
tabPanel("test",
sidebarPanel(
tags$h2("HEADER"),
shinyDirButton("dir", "Input Directory", "")
),
mainPanel(
h4("DIRPATH OUTPUT"),
verbatimTextOutput("dirpath_dply")
)
)
)
)
server <- function(input, output) {
home_dir <- "/home/dir/path"
shinyDirChoose(
input,
"dir",
roots = c(home = home_dir),
filetypes = c('', "txt", "png", "pdf")
)
dir <- reactive(input$dir)
output$dirpath_dply <- renderText({
parseDirPath(c(home=home_dir), dir())
})
observeEvent(ignoreNULL = TRUE,
eventExpr = {
input$dir
},
handlerExpr = {
base_name <- unlist(dir())
message(base_name)
datapath <- file.path(home_dir,paste(unlist(dir()) ))
})
}
shinyApp(ui, server)

我不确定您真正期望得到什么,但以下是我的解释(为了匹配任何用户/系统,我将home_dir更改为~(。

注意:您不需要提供filetypes,因为shinyDirChoose用于选择目录,而不是文件。你的用户界面也有点奇怪。不建议在另一个...Page中使用...Page,因为...Page通常是最顶层的UI元素。

dir()将提供选定的目录基名称。在使用值之前,我会检查其真实性。

server <- function(input, output) {
home_dir <- "~"
shinyDirChoose(
input,
"dir",
roots = c(home = home_dir)
)
dir <- reactive(basename(parseDirPath(c(home=home_dir), input$dir)))

output$dirpath_dply <- renderText({
dir()
})
observe({
if(isTruthy(dir()))
message(dir())
})
}

相关内容

  • 没有找到相关文章

最新更新