1

次のようなデータがあります(隣接行列):

foo bar 0.14 qux 0.2
bar foo 0.14 qux 0.4
qux foo 0.2 bar 0.4

私がやりたいのは、それらをペアワイズテーブルに変換することです:

  foo bar 0.14
  foo qux 0.2
  bar qux 0.4

しかし、私は次のコードで立ち往生しています。それを行う正しい方法は何ですか?

   use strict;

   while ( <DATA> ) {
        chomp;
        next if (/^>/);
        my $line = $_;
        my @els = split(/\s+/,$line);
        my $pivot = $els[0];

        my $genen = '';
        my $score = '';

        foreach  my $id ( 0 .. $#els  ) {
            next if ($id == 0);
            if ( $id % 2 != 0 ) {
                # gene name
                #print "$els[$id]\n";
                $genen = $els[$id];

            }
            else {
                #
                $score = $els[$id];
            }

    print "$pivot   $genen  $score\n";

        }

    #print "--\n";

    }
__DATA__
foo bar 0.3 qux 0.2
bar foo 0.15 qux 0.4
qux foo 0.3 bar 0.4
4

2 に答える 2

1
awk '{print $1,$2,$3} {print $1,$4,$5}' file
于 2013-04-22T10:11:31.690 に答える