From 253b95a0985e875589d308e1ac000c109046b2f6 Mon Sep 17 00:00:00 2001 From: Istvan Bartha <106101+pityka@users.noreply.github.com> Date: Sun, 28 Jan 2024 17:36:58 +0100 Subject: [PATCH] Add Series#getRaw --- saddle-core/src/main/scala/org/saddle/Series.scala | 10 ++++++++++ .../src/test/scala/org/saddle/SeriesCheck.scala | 13 +++++++++++++ 2 files changed, 23 insertions(+) diff --git a/saddle-core/src/main/scala/org/saddle/Series.scala b/saddle-core/src/main/scala/org/saddle/Series.scala index 87f107f7..d6b5ff7c 100644 --- a/saddle-core/src/main/scala/org/saddle/Series.scala +++ b/saddle-core/src/main/scala/org/saddle/Series.scala @@ -172,6 +172,16 @@ class Series[X: ST: ORD, @spec(Int, Long, Double) T: ST]( if (loc == -1) NA else at(loc) } + /** If a key exists, get the value associated with the + * first occurrence of that key. + * If the key does not exists, then throw. + * @return + */ + def getRaw(key: X): T = { + val loc = index.getFirst(key) + raw(loc) + } + /** Get the last value of the Series */ def last: Scalar[T] = values.last diff --git a/saddle-core/src/test/scala/org/saddle/SeriesCheck.scala b/saddle-core/src/test/scala/org/saddle/SeriesCheck.scala index 876e76db..9e34fbd3 100644 --- a/saddle-core/src/test/scala/org/saddle/SeriesCheck.scala +++ b/saddle-core/src/test/scala/org/saddle/SeriesCheck.scala @@ -283,6 +283,19 @@ class SeriesCheck extends Specification with ScalaCheck { } } } + "get raw (key) works" in { + implicit val ser = Arbitrary(SeriesArbitraries.dupSeriesDoubleWithNA) + + forAll { (s: Series[Int, Double]) => + (s.length > 0) ==> { + val loc = Gen.choose(0, s.length - 1) + forAll(loc) { i => + val idx = s.index.raw(i) + s.getRaw(idx).toString must_== s.values.raw(s.index.findOne(_ == idx)).toString + } + } + } + } "last (key) works" in { implicit val ser = Arbitrary(SeriesArbitraries.dupSeriesDoubleWithNA)