首页 > 解决方案 > 构建闪亮的应用程序时 fread 函数出错

问题描述

我应该从中读取文件,fileInput但是当我运行应用程序时出现此错误:

警告:fread 中的错误:input= 必须是包含文件名的单个字符串、包含至少一个空格的系统命令、以 'http[s]://'、'ftp[s]://' 开头的 URL或 'file://',或者,输入数据本身至少包含一个 \n 或 \r

我的闪亮代码:

library(shiny)
library(data.table)
library(DT)

ui <- fluidPage(
    sidebarLayout(
        sidebarPanel(
            fileInput("file","Operation Record",
                      multiple = TRUE,
                      buttonLabel = "Browse...",
                      placeholder = "No file selected",
                      accept = c(
                          "text/csv",
                          "text/comma-separated-values,text/plain",
                          ".csv")
            )
        ),
        mainPanel(
            DTOutput("table")
        )
    )
)

server <- function(input, output) {
    output$table <- renderDT({
        originalDataset <- fread(input = input$file$datapath,encoding = "UTF-8",
                                 select = c("Date","ID","Type","EMail","ClientType"))

        return(originalDataset)
    })
}

# Run the application 
shinyApp(ui = ui, server = server)

有什么建议吗?提前谢谢你。

标签: rshiny

解决方案


当您运行应用程序时,input$fileNULL,直到您选择一个文件。你需要一个req

server <- function(input, output) {
    output$table <- renderDT({
        req(input$file)
        originalDataset <- fread(input = input$file$datapath,encoding = "UTF-8",
                                 select = c("Date","ID","Type","EMail","ClientType"))

        return(originalDataset)
    })
}

推荐阅读