def filter_vectors &block
      return to_enum(:filter_vectors) unless block_given?

      dup.tap { |df| df.keep_vector_if(&block) }
    end
Iterates over each vector and retains it in a new DataFrame if the block returns
true for that vector.