我想使用Statistics::Basic::ComputedVectorset_filter
,但我想要使用的過濾器是1和0的數組。這可能嗎?如何根據Statistics :: Basic :: ComputedVector中的數組過濾矢量?
這就是我想做的事:
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和1的數組......爲什麼不只是'$ compV1-> set_filter(sub {map {$ filter [$ _]} @_});'?或者'$ compV1-> set_filter(sub {map {$ filter [$ _] + 0} @_});' – reinierpost 2011-03-09 17:15:23
@reinierpost - 我對OP的理解是過濾器應該選擇這些值'$ v1',其中'@過濾器「設置爲1.我可能會錯誤地選擇它。 – bvr 2011-03-09 17:44:24
這不是它說的,但總是給OP超過/他要求:-) – reinierpost 2011-03-09 18:07:53