1

我是 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 作为值的 Vector

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

对于系列,它正在创建一个以 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

谢谢

4

1 回答 1

2

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

要回答您的问题,您将通过对Lists 执行以下操作获得预期结果:

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

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

val myMap = Map("a"->1,"b"->2)
val myVec = Vec(myMap.toSeq:_*)
于 2017-03-15T11:27:28.960 回答