gpt4 book ai didi

Perl:将哈希数组转换为矩阵

转载 作者:行者123 更新时间:2023-12-02 14:11:05 24 4
gpt4 key购买 nike

我有一个哈希数组,其中许多具有共享 key 。

我想将其转换为矩阵以便在[R]中进行分析,使得每一行代表一个散列,每个唯一键是一列,即(空白)或“。”如果散列不包含该特定 key ,则为“NA”。

目前,我计划在哈希数组中找到每个唯一的键,并通过为每个哈希循环遍历每个键来构造我的矩阵......但一定有更好的方法??

谢谢!

示例:

my %hash_A = (
A=> 12,
B=> 23,
C=> 'a string'
);
my %hash_B = (
B=> 23,
C=> 'a different string',
D=> 99
);

给予:

A,B,C,D
12,23,'a string',NA
NA, 23, 'a different string', 99

最佳答案

如果您确保每个可能的键的每个散列都初始化为“NA”,那么您基本上就有一个矩阵,您可以将其打印出来......(当数据不是“NA”时,数据应该被覆盖”)

如果您无法初始化它们,则只需预先跟踪所有可能的键,然后在打印数据结构时循环它们(而不是循环遍历每个单独哈希的键)。

my @possibleKeys = keys %possibleKeys;foreach my $hashref (@arrayOfHashes)    foreach my $key (@possibleKeys) {        if(!defined ${$hashref}{$key}) {             print "NA ";         else {             print "$hashref{$key} ";         }    print "\n";     }}

编辑:keys %possibleKeys 将为每次调用返回不同顺序的数组(请参阅 http://perldoc.perl.org/functions/keys.html ),因此键应存储在数组中以保持顺序。

关于Perl:将哈希数组转换为矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8978414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com