def set_at positions, vector
      if positions.last == :row
        positions.pop
        return set_row_at(positions, vector)
      end

      validate_positions(*positions, ncols)
      vector =
        if vector.is_a? Daru::Vector
          vector.reindex @index
        else
          Daru::Vector.new vector
        end

      raise SizeError, 'Vector length should match index length' if
        vector.size != @index.size

      positions.each { |pos| @data[pos] = vector }
    end
Set vectors by positions
@param [Array<Integer>] positions positions of vectors to set
@param [Array, Daru::Vector] vector vector to be assigned
@example
df = Daru::DataFrame.new({
a: [1, 2, 3],
b: ['a', 'b', 'c']
})
df.set_at [0], ['x', 'y', 'z']
df
#=> #<Daru::DataFrame(3x2)>
#       a   b
#   0   x   a
#   1   y   b
#   2   z   c