我有这两个清单:
val forecast = listOf(30, 21, 29, 31, 40, 48, 53, 47, 37, 39, 31, 29)
val actual = listOf(27, 31, 27, 26, 21, 13, 21, 18, 33, 35, 40, 36)
Run Code Online (Sandbox Code Playgroud)
并且需要计算每个月的预测误差,这是forecast-actual我尝试过以下内容:
var errors: MutableList<Double> = mutableListOf<Double>()
actual
.forEachIndexed { index, d -> forecast[index] - d}
.let { i -> errors.add(i) }
Run Code Online (Sandbox Code Playgroud)
但没有奏效,因为i结果forEachIndexed是Unit不是Double:(
Bre*_*tty 12
你想要比forEach做更多的地图.我会做以下事情然后把它变成你正在寻找的任何类型(如果你真的想要一个可变的double列表):
val errors = forecast.zip(actual).map { it.first - it.second }
Run Code Online (Sandbox Code Playgroud)
将列表压缩在一起会为您提供一个元组列表,其中第一个值来自第一个列表(预测),第二个值来自第二个列表(实际).然后,您可以将该列表映射到每个元组中的值之间的差异.Map返回一个新列表,其中包含应用于每个项目的更改,而forEach会对每个项目执行此功能,但不会生成新列表.
或者更精益的方式:
val errors = forecast.zip(actual){f,a -> f-a)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6157 次 |
| 最近记录: |