Shiny R renderDataTable với bảng null
Cách tốt nhất để chỉ hiển thị một bảng dữ liệu trong bóng nếu có dữ liệu là gì? Hiện tại, tôi đang gặp lỗi sau vì tôi đang nói sáng bóng để hiển thị bảng dữ liệu, ngay cả khi nó là NULL.
Warning in file(file, "rt") :
cannot open file '\': No such file or directory
Warning: Error in file: cannot open the connection
Mã của tôi được chia như thế này, nơi tôi đọc dữ liệu khi người dùng chọn tệp csv. Sau khi người dùng chọn tệp csv, lỗi sẽ biến mất và mọi thứ hoạt động tốt. Làm cách nào để yêu cầu Shiny không hiển thị bảng dữ liệu cho đến khi một tệp hợp lệ được chọn?
filedata <- reactive({
if (is.null(input$file_selector)){ # User has not uploaded a file yet return(NULL) } else { read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',input$file_selector),skip=1)}
})
output$filetable <- renderDataTable({
filedata()
})
Tôi đã thử đặt đầu ra $ filetable <- .... mã sau dòng read.csv ... trong hàm <- ... của dữ liệu đệ trình, nhưng điều đó cũng không hoạt động. Tôi nên làm gì khác ở đây?
Trả lời
Bạn có thể sử dụng hàm req (), điều này sẽ kiểm tra xem tệp có hiện tại hay không, sau đó nó sẽ chuyển đến mã thủ tục
filedata <- reactive({
file <-input$file_selector
req(file)
read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',file),skip=1)}
})
Vui lòng sử dụng req(), như hình dưới đây
filedata <- reactive({
req(input$file_selector) read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',input$file_selector),skip=1)
})