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
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