我想使用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