【发布时间】:2018-01-12 03:45:47
【问题描述】:
我有一个大的 tar.gz 文件 (>2GB),我想从中读取 R 中的特定 .dat 文件不解压缩原始 tar.gz 文件。
我尝试如下关注this post:
p35_data_path <- "~/P35_fullset.tar.gz"
file.exists(p35_data_path) #TRUE
# Try to readin foldera/class1/mydata.dat from the zip file
mydata <- read.table(unz(p35_data_path
, "foldera/class1/mydata.dat"))
当我运行上面的代码时,我得到一个read.table 错误
Error in open.connection(file, "rt") : cannot open the connection
In addition: Warning message:
In open.connection(file, "rt") :
cannot open zip file '~/P35_fullset.tar.gz'
"~/P35_fullset.tar.gz" 文件存在。而且里面的具体文件肯定存在foldera/class1/mydata.dat。
有人可以帮忙解决这个问题吗?
【问题讨论】:
-
您的意思是“不将原始
tar.gz解压缩到基于 ssd/spindle 的存储”,因为它必须在内存中解压缩。另请注意,unz()仅适用于.zip文件。不知道你从哪里得到它处理.tar.gz的印象。查看archive包。 -
@hrbrmstr。谢谢 - 我基本上不想将所有内容解压到磁盘。我可以将特定文件解压到磁盘,但是对于单个文件来说这花费了太长时间,所以我认为可能有一种方法可以通过单独访问它们来完成。我会检查
archive包并用查询报告 -
这对我有用(感谢@hrbrmstr)
p35_data_path <- "~/P35_fullset.tar.gz" # Try to readin foldera/class1/mydata.dat from the zip file x <- archive::archive_read(archive = p35_data_path , file = "foldera/class1/mydata.dat") mydata <- readr::read_csv(x)
标签: r read.table