R Shiny:解压缩不会在反应中输出正确的文件路径

R Shiny: unzip doesn't output the correct file path in reactive

在闪亮的应用程序中,如果您单击打开文件对话框,它会运行此反应函数:

data <- reactive({
    file <- input$file
    req(file)
    if (is.null(file)) {
        return(NULL)
    }
    fpath <- file$datapath
    if (endsWith(".zip", fpath)) {
        fpath <- unzip(zipfile = fpath, files = NULL, overwrite = TRUE)
    }
    data <- read.csv(fpath, header = TRUE)
    data
})

对于 CSV 文件,它按预期运行。对于 ZIP 文件,fpath 不会成为解压缩 CSV 的路径 - 它保留为临时 ZIP 文件路径并导致 read.csv 函数出错。此代码在反应之外按预期运行。每次尝试将调试代码插入此反应式或在调试器中单步执行它都会被忽略。它不会打印到 stderr 等

如何解压缩 ZIP 文件并读入 CSV 文件?这个 article doesn't fully answer the question. I think there is something in this article 但我无法在我自己的上下文之外理解它。

你有更完整的例子吗? 对我来说,它正在工作,只需将 if (endsWith(".zip", fpath)) 更改为 if (endsWith(fpath, ".zip"))