def rolling_fillna!(direction=:forward)
      enum = direction == :forward ? index : index.reverse_each
      last_valid_value = 0
      enum.each do |idx|
        if valid_value?(self[idx])
          last_valid_value = self[idx]
        else
          self[idx] = last_valid_value
        end
      end
      self
    end
Rolling fillna
replace all Float::NAN and NIL values with the preceeding or following value

@param direction [Symbol] (:forward, :backward) whether replacement value is preceeding or following

@example
dv = Daru::Vector.new([1, 2, 1, 4, nil, Float::NAN, 3, nil, Float::NAN])

2.3.3 :068 > dv.rolling_fillna(:forward)
=> #<Daru::Vector(9)>
0   1
1   2
2   1
3   4
4   4
5   4
6   3
7   3
8   3