【发布时间】:2017-12-14 22:05:03
【问题描述】:
1) 我在目录“C:/Users/Me/Desktop/JUNETEST/”中有 48 个 tar.gz 文件。 这些文件都具有相同的格式,除了代表每个文件的一天中的小时的数字(即 voa_20170601-110000.tar.gz,而不是 voa_20170601-120000.tar.gz。我需要导入所有 48 个文件并解压缩文件并只提取每个“.tar.gz”中具有相同名称的数据文件。名称是“hit_data.tsv”。我想分配每个“hit_data.tsv " 作为数据框列表中的一个元素。我的代码似乎可以正确解压所有 48 个文件。
但是,问题在于读取 hit_data.tsv 文件。它尝试读取每一列,但由于没有列标题而出现问题,因此它只读取第一列。 如果单独拉取每个文件,我会为 colnames(hit_data.tsv) 分配名为 Headers 的向量的值。每个文件都具有相同的列名,因此 Header 向量可以应用于每个 hit_data.tsv。我的问题是,如何在循环期间为每个文件分配列名?或者如何更正我的代码以读取“hit_data.tsv”文件的所有列?
当前状态的代码如下:
files <- list.files(path = "C:/Users/Reginald/Desktop/JUNETEST/",pattern = "tar.gz")
VOA<-length(files)
for (i in files){
eval(parse(text = paste0("untar(\"C:/Users/Reginald/Desktop/JUNETEST/",i,"\",files=\"hit_data.tsv\")",sep="" )))
VOA[i] <- read_tsv("~/hit_data.tsv")
#VOA[i]<- as.data.frame(VOA[i])
#colnames(VOA[i])<-Headers[1,]
VOA.df <-do.call(rbind,VOA[i])
}
【问题讨论】:
标签: r for-loop tar do.call readr