Skip to content
12 changes: 12 additions & 0 deletions series/series_complex128.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,18 @@ func (s *SeriesComplex128) Insert(row int, val interface{}, options ...dataframe
}

func (s *SeriesComplex128) insert(row int, val interface{}) {
switch V := val.(type) {
case []complex128:
// count how many NaN
for _, v := range V {
if cmplx.IsNaN(v) {
s.nilCount++
}
}
s.Values = append(s.Values[:row], append(V, s.Values[row:]...)...)
return
}

s.Values = append(s.Values, cmplx.NaN())
copy(s.Values[row+1:], s.Values[row:])

Expand Down
12 changes: 12 additions & 0 deletions series_float64.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,18 @@ func (s *SeriesFloat64) Insert(row int, val interface{}, options ...Options) {
}

func (s *SeriesFloat64) insert(row int, val interface{}) {
switch V := val.(type) {
case []float64:
// count how many NaN
for _, v := range V {
if isNaN(v) {
s.nilCount++
}
}
s.Values = append(s.Values[:row], append(V, s.Values[row:]...)...)
return
}

s.Values = append(s.Values, nan())
copy(s.Values[row+1:], s.Values[row:])

Expand Down
19 changes: 19 additions & 0 deletions series_int64.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,25 @@ func (s *SeriesInt64) Insert(row int, val interface{}, options ...Options) {
}

func (s *SeriesInt64) insert(row int, val interface{}) {
switch V := val.(type) {
case []int64:
var vals []*int64
for _, v := range V {
v := v
vals = append(vals, &v)
}
s.values = append(s.values[:row], append(vals, s.values[row:]...)...)
return
case []*int64:
for _, v := range V {
if v == nil {
s.nilCount++
}
}
s.values = append(s.values[:row], append(V, s.values[row:]...)...)
return
}

s.values = append(s.values, nil)
copy(s.values[row+1:], s.values[row:])

Expand Down
19 changes: 19 additions & 0 deletions series_string.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,25 @@ func (s *SeriesString) Insert(row int, val interface{}, options ...Options) {
}

func (s *SeriesString) insert(row int, val interface{}) {
switch V := val.(type) {
case []string:
var vals []*string
for _, v := range V {
v := v
vals = append(vals, &v)
}
s.values = append(s.values[:row], append(vals, s.values[row:]...)...)
return
case []*string:
for _, v := range V {
if v == nil {
s.nilCount++
}
}
s.values = append(s.values[:row], append(V, s.values[row:]...)...)
return
}

s.values = append(s.values, nil)
copy(s.values[row+1:], s.values[row:])

Expand Down
20 changes: 20 additions & 0 deletions series_time.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,26 @@ func (s *SeriesTime) Insert(row int, val interface{}, options ...Options) {
}

func (s *SeriesTime) insert(row int, val interface{}) {

switch V := val.(type) {
case []time.Time:
var vals []*time.Time
for _, v := range V {
v := v
vals = append(vals, &v)
}
s.values = append(s.values[:row], append(vals, s.values[row:]...)...)
return
case []*time.Time:
for _, v := range V {
if v == nil {
s.nilCount++
}
}
s.values = append(s.values[:row], append(V, s.values[row:]...)...)
return
}

s.values = append(s.values, nil)
copy(s.values[row+1:], s.values[row:])

Expand Down