Scala如何将集合中的元素放入数组函数中

Posted

技术标签:

【中文标题】Scala如何将集合中的元素放入数组函数中【英文标题】:Scala how to put elements in collection into array function 【发布时间】:2017-08-07 13:40:56 【问题描述】:

所以我有一个数据框和一个列名列表,我需要将它们放入数组函数中,这样我就可以使用 .withColumn 函数将名称传递给 UDF。

像这样:val names = "col1,col2,col3" 而我需要的是 array("col1","col2","col3") 。我试图将名称变成 Seq 并像这样执行 for 循环:

array(for(i <- 0 to names.length-1)names(i))

但问题是这个 for 循环不返回任何值。但是如果我做一个 for yield 循环,那么它会将我想要的所有元素放入一个集合中,但我需要单独提取它们。

关于如何解决这个问题的任何想法?

为了让问题更清楚......数组是一个函数,而不是一个集合。数组就是集合。

例子:

scala> array("col1","col2","col3")
res20: org.apache.spark.sql.Column = array(col1, col2, col3)

我需要什么:我有序列val names = Seq("col1","col2","col3"),我需要将 Seq 中的元素放入数组函数中。

【问题讨论】:

names.split(",") @philantrovert 给我一个收藏,我不需要收藏 你的array 和scala Array 不一样?如果不是数组,你想要什么? 你能提供输入和预期输出吗? @philantrovert for scala 2.0 数组是一个函数,数组是集合,请看我的更新 【参考方案1】:

应该这样做:

import org.apache.spark.sql.function.col, array

val names = "col1,col2,col3"

val cols = names.split(",").map(col(_))

val arrayCols = array(cols: _*)

【讨论】:

救了我的命!非常感谢!

以上是关于Scala如何将集合中的元素放入数组函数中的主要内容,如果未能解决你的问题,请参考以下文章

如何在scala中获取分层数组的最终元素并在其上应用聚合函数?

python如何挑选矩阵中的不相领的列组成新的矩阵

函数式编程之实践

FreeMarker如何将ACTION传递的数组放入对应数组?

使用数组中的每个元素调用集合返回函数

如何将递归函数的答案放入数组(PHP)中?