这是Working with missing values in Deedle Time Series in F# (2)
的另一个后续行动我已将此函数写入map2系列,当缺少任何输入时返回缺失值。
let map2series (f:'T1->'T2->'R)(series1:Series<'K,'T1 opt>)(series2:Series<'K,'T2 opt>):Series<'K,'R opt>=
let S = series1.Zip(series2,JoinKind.Outer) //Series<'K,('T1 opt opt * 'T2 opt opt)>
S |> Series.mapValues (fun (a,b) -> match (a,b) with
| (OptionalValue.Present(a'), OptionalValue.Present(b')) -> OptionalValue.map2 f a' b'
| _ -> OptionalValue.Missing)
因为Series<'K,'T opt>
在使用.Zip
或.Join
方法后自然出现在Deedle中。
但是,如前所述,Series<'K,'V>
已经支持缺失值,所以我想重写上面的函数,基本上会做同样的事情,除了它需要{{ 1}}作为输入
Series<'K,'V>
然而,这不起作用,当缺少一个值时,我在第二个联合案例中没有正确的语法......
基本上不是最后一个let map2series1 (f:'T1->'T2->'R)(series1:Series<'K,'T1>)(series2:Series<'K,'T2>):Series<'K,'R>=
let S = series1.Zip(series2,JoinKind.Outer) //Series<'K,('T1 opt * 'T2 opt)>
S |> Series.mapValues (fun (a,b) -> match (a,b) with
| (OptionalValue.Present(a'), OptionalValue.Present(b')) -> f a' b'
| _ -> None)
,我需要指定一个与None
对应的值,但我无法找到它。
我也看了类似的东西
<missing>
但无法找到正确的表达
答案 0 :(得分:1)
你可以这样做:
{{1}}