好奇我能不能在这里得到一点帮助。我是 perl 新手,不知道如何将以下代码转换为对我的分析更有用的东西。
此代码目前从用户提供的数据文件列表中获取第 1 列和第 4 列,并将它们放在一起。
对于此代码生成的“当前输出”的每一行(见下文),我希望我的代码做的是对这些第 4 列值(filea、fileb、filec)求和。不太清楚如何实现这个......
电流输出:
filea fileb filec
entrya | 0 |10.2 | 0
entryb | 0 | 0.0 | 1
entryc | 8 | 57.0| 46
期望的输出
sum
entrya | 10.2
entryb | 1
entryc | 111
当前代码如下所示:
main: {
my %data;
foreach my $file (@rsem_files) {
open (my $fh, $file) or die "Error, cannot open file $file";
my $header = <$fh>; # ignore it
while (<$fh>) {
chomp;
my @x = split(/\t/);
my $acc = $x[0];
my $count = $x[4];
$data{$acc}->{$file} = $count;
}
close $fh;
}
my @filenames = @rsem_files;
foreach my $file (@filenames) {
$file = basename($file);
}
print join("\t", "", @filenames) . "\n";
foreach my $acc (keys %data) {
print "$acc";
foreach my $file (@rsem_files) {
my $count = $data{$acc}->{$file};
unless (defined $count) {
$count = "NA";
}
print "\t$count";
}
print "\n";
}
exit(0);
}