R闪亮:解压缩无法在反应堆中输出正确的文件路径

时间:2018-10-25 13:16:24

标签: r debugging shiny reactive-programming unzip

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

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不能完全回答问题。我认为 article中有一些内容,但我无法从自己的上下文中理解。

1 个答案:

答案 0 :(得分:1)

您有更完整的例子吗? 对我来说,它的工作原理是,只要将if (endsWith(".zip", fpath))更改为(endsWith(fpath, ".zip"))