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



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

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 文件路径,并导致读.csv函数出错。此代码在反应式之外按预期运行。每次尝试将调试代码插入此反应式代码或在调试器中单步执行此响应式代码的尝试都将被忽略。它不会打印到标准等。

如何解压缩 ZIP 文件并读取 CSV 文件?本文没有完全回答这个问题。我认为这篇文章中有一些东西,但我无法在我自己的上下文之外理解它。

你有更完整的示例吗? 对我来说,它正在起作用,只需通过 if 更改if (endsWith(".zip", fpath))(endsWith(fpath, ".zip"))

最新更新