2017-03-22 14 views
5

Tôi cần xử lý tệp lớn (> 500mb) trong R. Vì vậy thay vì tải tệp nặng trong môi trường R, tôi xử lý tệp theo khối số lượng hàng cụ thể và cuối cùng nhận được giá trị tổng hợp.Nhận đường dẫn tệp từ giao diện người dùng sáng bóng (Không chỉ thư mục) bằng nút duyệt mà không tải lên tệp

tôi cần sử dụng để xác định tập tin (sử dụng một số loại chức năng browse) để tôi có thể ăn các đường dẫn tập tin để thuật toán của tôi

fileConnection <-file("../output/name.txt", open="w") 

Có cách nào để có được chỉ đường dẫn tập tin từ Shiny UI dựa trên địa chỉ được người dùng chỉ định? Tôi đã thử gói ShinyFiles, nhưng nó chỉ cung cấp thư mục để chọn, chứ không phải tập tin.

Cảm ơn các bạn!

+0

Bạn có thể sử dụng 'fileInput' và sử dụng tham số' input $ inpuId $ datapath' để truy cập vào datapath. – SBista

+0

@SBista chào mừng trở lại :) ... Khi tôi cung cấp tệp tin, giao diện người dùng thực sự tải lên tệp. Tôi không muốn tệp được tải lên (quá lớn và mất thời gian). Nó chỉ cần đi theo đường dẫn của tập tin. Điều đó có thể không? –

Trả lời

4

Chức năng này có sẵn trong gói shinyFiles. Hãy xem ví dụ tối thiểu này:

library(shiny) 
library(shinyFiles) 


    ui <- fluidPage(
    shinyFilesButton("Btn_GetFile", "Choose a file" , 
            title = "Please select a file:", multiple = FALSE, 
          buttonType = "default", class = NULL), 

       textOutput("txt_file")  
        ) 


    server <- function(input,output,session){ 

    volumes = getVolumes() 
    observe({ 
    shinyFileChoose(input, "Btn_GetFile", roots = volumes, 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) 

Hy vọng điều này sẽ hữu ích!

+0

Hoàn hảo !! Cảm ơn rất nhiều @SBista –

Các vấn đề liên quan