ファイルに含まれるデータに対して転置を実行しようとしています。データは次のとおりです。
1 2 3 4 5
2 3 4 5 6
4 5 6 7 9
4 3 7 6 9
次のような結果が得られますが、これは正しくありません。最後の列が適切に転置されないため、コードでエラーが発生しません。任意のソリューション...
コード:
#!/usr/bin/perl
use strict;
use warnings;
my @dependent; # matrix of dependent variable
# Reading the data from text file to the matrix
open( DATA, "<example.txt" ) or die "Couldn"t open file , $!"; #depenedent
# Storing data into the array in matrix form
while ( my $linedata = <DATA> ) {
push @dependent, [ split "t", $linedata ];
}
my $m = @dependent;
#print "$mn";
my $n = @{ $dependent[1] };
#print $n;
#print "Matrix of dependent variables Y n";
for ( my $i = 0; $i < $m; $i++ ) {
for ( my $j = 0; $j < $n; $j++ ) {
#print $dependent[$i][$j]," ";
}
#print "n";
}
my @transpose;
for ( my $i = 0; $i < $n; $i++ ) {
for ( my $j = 0; $j < $m; $j++ ) {
$transpose[$i][$j] = $dependent[$j][$i];
}
}
for ( my $i = 0; $i < $n; $i++ ) {
for ( my $j = 0; $j < $m; $j++ ) {
print $transpose[$i][$j], " ";
}
print "n";
}
回答:
回答№1は6チャンプ 分割する前のデータの読み取り時。奇妙な出力は、入力の各行の最後の要素にまだ改行が付いていることが原因です。
ちょっとしたメモとして、 DATA
ファイルハンドルを選ぶのに非常に良い名前ではありません; perlはすでに DATAという名前の特別な組み込みファイルハンドル スクリプトまたはモジュールに埋め込まれているデータを読み取るため、その名前を自分で使用すると混乱する可能性があります:)