У меня есть файл tsv foo.tsv с именами столбцов: "a", "b", "c", "d". Я хочу прочитать этот файл и загрузить его содержимое в матрицу PDL. Файл foo.tsv выглядит следующим образом:
a b c d
1 6 7 4
2 7 6 10
3 8 5 6
4 9 4 8
5 10 3 7
Я использовал этот код, чтобы прочитать файл в матрицу и распечатать его:
use PDL::Core qw(pdl);
use PDL::IO::CSV ':all';
# Header set to the first row following https://github.com/kmx/pdl-io-csv
# Sep_char set to the tab
my $data = rcsv2D('foo.tsv', {text2bad => 1, header => 1, sep_char => "\t"});
print $data;
Печатная матрица неверна, поскольку в ней отсутствует первая строка с номерами после заголовка:
[
[ 2 3 4 5]
[ 7 8 9 10]
[ 6 5 4 3]
[10 6 8 7]
]
Я изменил значение заголовка на 'auto', которое должно пропускать строки, имеющие во всех столбцах ненулевые значения c:
my $data = rcsv2D('foo.tsv', {text2bad => 1, header => 'auto', sep_char => "\t"});
Теперь я получаю предупреждение, но матрица выглядит нормально:
Argument "auto" isn't numeric in foreach loop entry at C:/sw/pdl/perl/vendor/lib/PDL/IO/CSV.pm line 335, <DATA> line 207.
[
[ 1 2 3 4 5]
[ 6 7 8 9 10]
[ 7 6 5 4 3]
[ 4 10 6 8 7]
]
Я не понимаю, почему результирующие матрицы отличаются и почему я получаю неправильный результат, устанавливая заголовок для первой строки с header => 1 ?