我正在尝试对文件中包含的数据执行转置。数据如下:
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 "$m\n";
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";
}
答案 0 :(得分:6)
chomp您的数据;您的奇怪输出是由输入的每一行的最后一个元素引起的,但仍然附加了换行符。
正如旁注,DATA
不是一个非常好的名字来挑选文件句柄; perl已经定义了special builtin filehandle named DATA来读取嵌入在脚本或模块中的数据,因此使用该名称可能会导致混淆:)