从R中的tar.gz中读取特定文件

时间:2018-01-12 03:45:47

标签: r read.table

我有一个很大的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

有人可以协助纠正这个问题吗?

2 个答案:

答案 0 :(得分:0)

**da<-untar(Tarfile, files = NULL, list = TRUE, exdir = ".",compressed = "gzip")** ###这是用于列出TAR下的文件

**da<-as.data.table(da)** ###将列出的文件另存为数据表

然后使用您自己的过滤器技术像我一样过滤文件并保存在“名称”中

**g<-c(da$Name)** ###然后列出名称

**untar(Tarfile, files = g, list = FALSE, exdir = "exportRQA",compressed = "gzip")** ###这最终是用于提取特定文件的命令。

答案 1 :(得分:0)

您应该能够使用基本R的untar()来解压缩归档文件:

p35_data_path <- "~/P35_fullset.tar.gz" 
file.exists(p35_data_path) #TRUE

# Try to readin foldera/class1/mydata.dat from the .tar.gz file
untar(p35_data_path, "foldera/class1/mydata.dat")  # this extracts the file from archive
mydata <- read.table("foldera/class1/mydata.dat")  # so you can read it

文件被提取到文件夹内,但是,您可以指定将文件提取到何处。有关更多信息,请参见documentation