- 论坛徽章:
- 0
|
本帖最后由 lijie_perl 于 2011-12-09 23:09 编辑
有2文件(见附件)
file1:
24523行(代表24523个样本,样本编号没有给出,默认按行依次编号)。每行39列且严格tab键分开,数值不是0就是1。
file2:
7628行(每一行代表一个聚类,每一行中得数代表file1中每一个样本的编号,空格分开)
现在读取file2中得每一行(即相同的一个聚类),并根据这一行的样本编号去file1查找出这个样本。并将此行所有样本“按列”求和。
最后输出应该是一个 7628*39的矩阵才对呀。为什么我的只有7628*3呀?每列还数值一样?明显不对~
我不知道程序错在哪里了?- #!/usr/bin/perl -w
- use strict;
- my %hash1;
- my $index=1;
- my @sum=0;
- open (IN1,"file1.txt");
- while ( <IN1> )
- {
- $hash1{$index}=$_;
- $index++;
- }
- close(IN1);
- open (IN2,"file2.txt");
- open OUT,">result.txt";
- while ( <IN2> )
- {
- my $i;
- my @line;
- my @sample = split;
- foreach my $item (@sample) {
- @line= split("\t", $hash1 {$item});
- for ($i=0,$i<$#line,$i++) {
- $sum[$i] += $line[$i];
- }
- }
- for ($i=0,$i<$#sum,$i++) {
- print OUT $sum[$i], "\t";
- }
- print OUT "\n";
- }
- close(IN2);
- close OUT;
复制代码 |
|