【发布时间】:2020-12-08 01:23:46
【问题描述】:
我正在尝试使用 R 中的 unz() 函数从 SAS 读取数据集。我不想解压缩文件。我已成功使用以下内容阅读其中之一:
dir <- "C:/Users/michael/data/"
setwd(dir)
dir_files <- as.character(unzip("example_data.zip", list = TRUE)$Name)
ds <- read_sas(unz("example_data.zip", dir_files))
效果很好。我能够读取数据集并进行分析。但是,当我尝试读取另一个数据集时,我遇到了错误:
dir2_files <- as.character(unzip("data.zip", list = TRUE)$Name)
ds2 <- read_sas(unz("data.zip", dir2_files))
Error in read_connection_(con, tempfile()) :
Evaluation error: error reading from the connection.
我在这里阅读了其他问题,说文件路径可能指定不正确。一些答案提到将 list.files() 提交到控制台以查看列出的内容。
list.files()
[1] "example_data.zip" "data.zip"
如您所见,我可以看到文件夹,并且我成功地能够从“example_data.zip”中读取数据集,但我无法访问 data.zip 文件夹。
我错过了什么?提前致谢。
【问题讨论】:
-
很确定
haven会自动解压缩文件。您是否尝试过提供 zip 文件的路径? (假设它不是一个包含多个文件的 zip)。data.zip也可能包含多个文件。在这种情况下,您需要使用lapply()或类似的方式阅读它们。 -
谢谢,@Andrew——不知道
haven。目录中的文件夹每个文件夹仅包含一个文件。我尝试提供 zip 文件夹的完整路径,但它仍然给了我同样的错误。我试过其他包,比如read.sas7bdat,但我遇到了同样的问题。我只是不明白为什么它适用于一个文件而不适用于另一个文件。我会继续寻找解决方案。 -
嗯,如果您遇到相同的错误,可能是您仍在连接中阅读。也许尝试只做
read_sas("C:/Users/michael/data/example_data.zip")和read_sas("C:/Users/michael/data/data.zip")(tidyverse 阅读功能也接受连接)。如果这不起作用,您也可以从 R 中解压缩文件 - 然后读入数据集。