- 论坛徽章:
- 1
|
本帖最后由 56836430 于 2015-09-21 21:27 编辑
这是 input, 想算出每行(从第二列到最后一列)的(median)中值,然后写在末尾一列。但是怎么都不对,请大家帮忙看看
OG001095 2 3 4 2 3 5 4 4 22 3 4 2 5 5 5 7 5 7 2 4 6 6 5 9 4 3 4 3 4 4 3 5 2 8 3 4 13 5
OG001096 2 8 4 3 3 3 6 3 13 4 3 2 5 3 5 4 4 6 3 10 3 11 9 20 3 4 5 2 3 3 3 6 4 6 3 4 2 4
OG001097 2 3 6 3 1 4 2 4 6 4 5 8 4 8 9 5 4 8 9 3 6 1 7 17 4 5 2 7 5 3 7 2 4 0 8 6 2 5
OG001098 6 10 1 4 6 9 1 6 4 3 6 3 1 7 5 4 8 6 5 8 1 3 3 10 8 4 4 7 5 9 4 3 5 2 6 4 1 7
#!/usr/bin/perl -w
use strict;
my $file=shift;
open FD,$file;
while(my $content=<FD>)
{
my @vals = sort {$a <=> $b} $content[1..38]; #提示这一行有错误,后面可能也有错误,但是没显示
my $len = @vals;
if($len%2) #odd?
{
print "$content\t $vals[int($len/2)]";
}
else #even
{
print "$content\t ($vals[int($len/2)-1] + $vals[int($len/2)])/2";
}
}
close FD; |
|