合并多个文件文本而不删除R中每个文件的第一行

时间:2015-08-10 07:32:00

标签: r merge

我想合并我放在文件夹中的100个文件文本。每个文件都是这样的:

0                           
0.72902 0                       
0.45426 0.54525 0                   
0.16167 0.34908 0.22247 0               
0.52886 0.54775 0.18069 0.28457 0           
0.93595 0.15927 0.8284  0.50287 0.82813 0       
0.25058 0.48914 0.13144 0.07898 0.16315 0.72607 0   
0.09604 0.80318 0.63657 0.27424 0.69319 0.91529 0.43121 0

我使用此命令合并了博客建议的几个文件文本。

setwd("target_dir/")

file_list <- list.files()

for (file in file_list){

  # if the merged dataset doesn't exist, create it
  if (!exists("dataset")){
    dataset <- read.table(file, header=TRUE, sep="\t")
  }

  # if the merged dataset does exist, append to it
  if (exists("dataset")){
    temp_dataset <-read.table(file, header=TRUE, sep="\t")
    dataset<-rbind(dataset, temp_dataset)
    rm(temp_dataset)
  }

}

问题是应用这个命令我获得了所有合并在一起的文件,但没有每个文件的第一行(在我的例子中是第一列的第一个零)。虽然我会保留它。 另外,我希望数据框中的每个文件文本除以以下文本文件中的空行。

关于如何解决问题的任何想法?

2 个答案:

答案 0 :(得分:2)

如果你想要的只是合并文件,没有理由解析表或使用rbind。这样的事情就足够了:

cat

使用像{{1}}这样的系统工具应该更快但便携性更低。

答案 1 :(得分:1)

setwd('target_dir/');
file_list <- list.files();
dataset <- data.frame(); ## initialize dataset to an empty data.frame
for (file in file_list) dataset <- rbind(if (nrow(dataset) > 0) rbind(dataset,NA),read.table(file,sep='\t',fill=T));
dataset;
##         V1      V2      V3      V4      V5      V6      V7 V8
## 1  0.00000      NA      NA      NA      NA      NA      NA NA
## 2  0.72902 0.00000      NA      NA      NA      NA      NA NA
## 3  0.45426 0.54525 0.00000      NA      NA      NA      NA NA
## 4  0.16167 0.34908 0.22247 0.00000      NA      NA      NA NA
## 5  0.52886 0.54775 0.18069 0.28457 0.00000      NA      NA NA
## 6  0.93595 0.15927 0.82840 0.50287 0.82813 0.00000      NA NA
## 7  0.25058 0.48914 0.13144 0.07898 0.16315 0.72607 0.00000 NA
## 8  0.09604 0.80318 0.63657 0.27424 0.69319 0.91529 0.43121  0
## 9       NA      NA      NA      NA      NA      NA      NA NA
## 10 0.00000      NA      NA      NA      NA      NA      NA NA
## 11 0.49272 0.00000      NA      NA      NA      NA      NA NA
## 12 0.94009 0.89679 0.00000      NA      NA      NA      NA NA
## 13 0.20863 0.86001 0.98594 0.00000      NA      NA      NA NA
## 14 0.11592 0.23149 0.60292 0.35263 0.00000      NA      NA NA
## 15 0.16404 0.81930 0.01534 0.41006 0.39640 0.00000      NA NA
## 16 0.38128 0.82583 0.18072 0.39924 0.73311 0.84009 0.00000 NA
## 17 0.91172 0.41074 0.83599 0.49375 0.74877 0.16469 0.78046  0