我有一个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 app来说却是一个新手。谁可以帮助我走正确的路?
答案 0 :(得分:1)
你可以这样做:
shinyDirChoose
您可以使用shinyFiles
包中的@Country
选择目录。该文件不会上传到此处,您将获得该目录中的所有文件名。
希望它有所帮助!