def clone *vectors_to_clone
      vectors_to_clone.flatten! if ArrayHelper.array_of?(vectors_to_clone, Array)
      vectors_to_clone = @vectors.to_a if vectors_to_clone.empty?

      h = vectors_to_clone.map { |vec| [vec, self[vec]] }.to_h
      Daru::DataFrame.new(h, clone: false, order: vectors_to_clone, name: @name)
    end
Returns a 'view' of the DataFrame, i.e the object ID's of vectors are
preserved.

== Arguments

+vectors_to_clone+ - Names of vectors to clone. Optional. Will return
a view of the whole data frame otherwise.