伪代码
i=0;
array $id;
array $name;
array $size;
$array[$i] = ($id, $name, $size);
我想获得输出
-----------------------------
ID | Name | Size
-----------------------------
$id(0) | $name(0) | $size(0)
$id(1) | $name(1) | $size(1)
$id(2) | $name(2) | $size(2)
... | ... | ...
-----------------------------
用于打印数据结构的伪代码
for $row in $array:
for $col in $row:
print $col, "|";
end;
print "\n;
end
我不确定从for-loop内部引用变量到外部for循环。 存在有限数量的变量但我可能需要在R中稍后基于它们进行统计分析。 例如,postreSQL和R之间的数据库连接仍处于测试阶段here。 所以我想保持数据原始。
如何更好地选择此类数据及其所需流程的数据结构?
答案 0 :(得分:1)
perl中有两个类似的数据结构。
你有list
这是一个有序的标量序列。你有hash
这是一组无序的键值对。
所以考虑到这一点 - 如果你的'id'是一个关键字段,可能值得使用键值对。 (然后你可以轻松地对它进行排序 - 实际上,你必须生成有序的输出)
但是在你的例子中 - 你真的不需要从'inner'访问'outer'循环:
my @LOL = (
[ 'id', 'name', 'size' ],
[ 'id2', 'name2', 'size2' ],
);
foreach my $row ( @LOL ) {
print join ( "|", @$row ), "\n";
}
这是一个如何工作的简单例子。
但是你的数据可能是关键值 - 所以你可能会这样做:
my %hash = (
'id1' => {
'name' => 'myname',
'size' => 'mysize',
},
'id2' => {
'name' => 'my2name',
'size' => 'my2size',
},
);
my @columns = qw ( name size );
foreach my $id ( sort keys %hash ) {
print join( "|", $id, @{ $hash{$id} }{@columns} ), "\n";
}
除非你需要维持关系,否则这可能没有必要。