def reorder! order
      @index = @index.reorder order
      data_array = order.map { |i| @data[i] }
      @data = cast_vector_to @dtype, data_array, @nm_dtype
      update_position_cache
      self
    end
Reorder the vector with given positions
@note Unlike #reindex! which takes index as input, it takes
positions as an input to reorder the vector
@param [Array] order the order to reorder the vector with
@return reordered vector
@example
dv = Daru::Vector.new [3, 2, 1], index: ['c', 'b', 'a']
dv.reorder! [2, 1, 0]
# => #<Daru::Vector(3)>
#   a   1
#   b   2
#   c   3