【发布时间】:2016-07-31 15:44:01
【问题描述】:
我想将几个固定宽度格式的txt文件读入R,但我首先需要将它们解压缩。
由于它们是非常大的文件,我想使用 readr 包中的 read_fwf,因为它非常快。
当我这样做时:
read_fwf(unz(zipfileName, fileName), fwf_widths(colWidths, col_names = colNames))
我收到此错误Error in isOpen(con) : invalid connection
但是当我这样做时:
read.table(unz(zipfileName, fileName)) 没有指定宽度,它读入R 就好了。关于为什么这不适用于 read_fwf 的任何想法?
我无法制作可重现的示例。这是我得到的:
df <- data.frame(
rnorm(100),
rnorm(100)
)
write.table(df, "data.txt", row.names=F, col.names = F)
zip(zipfile = "data.zip", files = "data.txt")
colWidths <- rep(2, 100)
colNames <- c("thing1","thing2")
zipfileName <- "data.zip"
fileName <- "data.csv"
【问题讨论】:
-
我只看到一列。我也没有看到你定义了 'zipfileName'
-
@42- 进行了编辑以使示例与问题匹配。
-
仔细阅读
?unz。特别是:"The 'description' is the full path to the zip file, with ‘.zip’ extension if required." -
在我的实际代码中,我将 zip 文件的完整路径指定为
description,并将 zip 中的 .txt 文件指定为filename。问题是当基本 R 函数包裹在unz函数周围时解压缩工作正常,但使用read_fwf时出现错误。 -
没错。所以正如医生(我)所说:“如果你这样扭我的手臂时总是很痛,......那就停止这样做”。 (至少在您向 Hadley 发送错误报告之前。)