我想使用Statistics::Basic::ComputedVector set_filter
,但我想要使用的过滤器是1和0的数组。这可能吗?
这就是我想要做的事情:
my $v1 = vector(1,2,3,4,5);
my @filter = qw(1 0 0 1 1);
my $cv = computed($v1);
$cv->set_filter(@filter);
我尝试了以下内容:
my $v1 = vector(1,2,3,4,5);
my $compV1 = computed($v1);
my @filter = (1) x $compV1->query_size();
$filter[-1] = 0;
say $compV1;
$compV1-> set_filter( sub { grep { $filter[$_] } 0..$#_ } );
say $compV1;
...但是会打印出来:
[1, 2, 3, 5, 7]
[0, 1, 2, 3]
我该怎么办?
我对grep
和map
的了解似乎超过Statistics::Basic
,这是一个问题,所以即使您从未使用过这个模块,我猜您也可以提供帮助
答案 0 :(得分:2)
->set_filter( sub { @_[ grep $filter[$_], 0..$#_ ] } )
答案 1 :(得分:1)
试试这个过滤器:
$compV1->set_filter(sub { map { $filter[$_] ? $_[$_] : () } 0..$#_ });
您的第二次尝试已关闭,但您返回的是索引而不是实际值。