我有一个R脚本,通过循环将函数应用于文件夹中的每个文件 . 该函数采用文件名和扩展名作为输入的完整路径 .
循环的输入使用要循环的每个文件的完整文件路径创建:
listBands <- list.files(myInputDir1, full.names = T)
然后循环:
for (i in 1:12) {
obj <- listbands[i]
function(obj)
and so on..
}
我想在一个Shiny应用程序中重新创建它,用户选择要循环的文件夹或选择文件夹中的所有文件 .
到目前为止,我根据这里的另一个问题尝试了这个:
ui <- fluidPage(
shinyFilesButton("Btn_GetFile", "Choose a file" ,
title = "Please select a file:", multiple = T,
buttonType = "default", class = NULL),
textOutput("txt_file")
)
server <- function(input,output,session){
volumes = getVolumes()
observe({
shinyFileChoose(input, "Btn_GetFile", roots = c(home = '~'), session =
session)
if(!is.null(input$Btn_GetFile)){
# browser()
file_selected<-parseFilePaths(volumes, input$Btn_GetFile)
output$txt_file <- renderText(as.character(file_selected$datapath))
}
})
}
shinyApp(ui = ui, server = server)
但是,此函数尝试上传所有文件,这是不可能的,因为它们太大,也没有必要 .
这个答案:Interactive directory input in Shiny app (R)允许我选择目录,但不能创建一个我可以用作循环输入的列表 .
我有一些R的经验,但对Shiny应用程序来说却是一个新手 . 谁可以帮助我走正确的道路?
1 回答
你可以这样做:
您可以使用
shinyFiles
包中的shinyDirChoose
选择目录 . 赢得't be uploaded here and you' ll获取该目录中的所有文件名 .希望能帮助到你!