我想合并我放在文件夹中的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)
}
}
问题是应用这个命令我获得了所有合并在一起的文件,但没有每个文件的第一行(在我的例子中是第一列的第一个零)。虽然我会保留它。 另外,我希望数据框中的每个文件文本除以以下文本文件中的空行。
关于如何解决问题的任何想法?
答案 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