我是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
谢谢
答案 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:_*)