gpt4 book ai didi

r - Scala:通过整数列表定义映射

转载 作者:行者123 更新时间:2023-12-02 07:01:00 25 4
gpt4 key购买 nike

从 R 转到 Scala(完全新手)。

假设我有两个列表:

val index  = List(0,0,1,0,1)
val a = List(1,2,3,4,5)

那么index可以定义一个从ab的自然映射:List[List[Int]]:

1 -> b(0)
2 -> b(0)
3 -> b(1)
4 -> b(0)
5 -> b(1)

这样:

b = List(List(1,2,4), List(3,5))

一般来说,给定 indexa,在 Scala 中创建 b 的最自然方法是什么?

例如例如,在 R 中我可以这样写:

run_map <- function(index, a) {
map <- function(data, i) {
data[[i]] <- a[which(index == i)]
data
}
Reduce(map, unique(index), list())
}

欢迎任何帮助!

最佳答案

如果您希望一个列表包含索引而另一个列表包含值,那么您可以将它们zip 在一起:

val myMap = (a zip b).toMap

其中 a 包含索引,b 包含值。

但是,如果存在重复索引,那么您需要执行以下操作:

for{
(i, list) <- (a zip b) groupBy (_._1)
} yield (i, list map (_._2))

其中您正在压缩、按索引分组,然后映射列表中的值。该创建的列表包含作为元组的索引和值。

关于r - Scala:通过整数列表定义映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20869764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com