簡単なデータファイルがあります。ファイルの各行には4つの要素があります。一部の行は空白のエントリで埋められていません。他の行には最初のエントリがあり、残りの3行は空白、つまりスペースで「埋められ」ています。タブ区切りのファイルです。
入力ファイルの例:
.
.
.
30 13387412 34.80391242 sSN_FIRST
30 13387412 34.80391242 sSN5_40
30.1
30.2
30.3
30.4
31 14740248 65.60590089 s32138223_44
31 14740248 65.60590089 s321382_LAST
.
.
.
繰り返しになりますが、これが重要な場合、私のファイルの「空白」には実際には1つのスペースが含まれています。
私の全体的な目標は、ファイル全体で2番目と3番目の列(4番目の列は無視されます)を「埋める」ことです。これを行うには、空白の連続する行のセットに加えて、連続する空白行のセットの直前の行と直後の行を識別するスクリプトが必要です。上記の例では、これは2行目から7行目です。これができたら、隣接する行の情報を使用して、間にある行の欠落しているエントリを「埋める」のに役立てることができます。
私はこの関数を実験してきましたuntil
が、データ行を行ごとに読み取るループと結合することに成功していません。たとえば、行を読んで空白行を見つけることができます。
open( my $FILE, "<$mapfile" );
my @file = <$FILE>;
close $FILE;
for ( my $i = 1 ; $i < scalar @file ; $i++ )
{
my @entries = split( '\t', $file[ $i ] );
if ( $entries[ 1 ] =~ m/ / )
{
print $file[ $i ]."\n";
}
}
しかし、私はこのuntil
関数を使用して、行を読み取り、探している行の連続セット(「空白」行と隣接する2つの「完全」行)を検索しようとしています。例えば:
until ( $file[ a line ] =~ m/ / && $file[ another line ] =~ m/ / )
{
my linear interpolation here;
}
誰かが配列を読み取り、行を比較してファイル全体で必要なセットを見つける方法を組み合わせる方法についてのヒントを教えてもらえますか?