Scala Saddle:动态创建Vec或系列对象

时间:2017-03-15 11:00:55

标签: scala saddle

我是Scala的新手,我对Saddle项目非常感兴趣,因为我来自Python Numpy + Pandas背景。

文档显示了如何以静态方式创建向量和系列,如下所示:

val v = Vec(1, 2)                 
val s = Series("a" -> 1, "b" -> 2)

我想知道(我要么没有找到它,要么在Scala中没有足够的知识来了解我自己)如何从List或Map对象动态创建它们

我怎么能这样做:

对于矢量

val myList = List(1,2)
val myVec = Vec(myList)

对于系列

val myMap = Map("a"-> 1, "b"->2)
val mySeries = Series(myMap)

目前是明显的,

对于Vector,它正在创建一个List,其值为

res48: Vec[List[Int]] = [1 x 1]
List(1, 2)

对于Series,它创建一个以Map对象为值

的系列
res51: Series[Int, Map[String, Int]] = [1 x 1]
0 -> Map(a -> 1, b -> 2)

预期结果是:

对于Vector就像我做的那样:

> Vec(1, 2)
res52: Vec[Int] = [2 x 1]
1
2

对于系列就像我做的那样:

Series("a"-> 1, "b" -> 2)
res53: Series[String, Int] = [2 x 1]
a ->  1
b ->  2

谢谢

1 个答案:

答案 0 :(得分:2)

如果要填充List的参数,实际上可以使用:_ *运算符(分号下划线星运算符)。它实际上是“splats”相关的对象。

要回答您的问题,您将通过List s执行此操作获得预期结果:

val myList = List(1,2)
val myVec = Vec(myList:_*)

至于Maps,它与上面的略有不同,因为您必须将集合转换为Sequence

val myMap = Map("a"->1,"b"->2)
val myVec = Vec(myMap.toSeq:_*)