Deedle:使用Frame.mapColValues的错误

时间:2014-09-30 08:53:26

标签: f# deedle

我正在关注一个教程:
http://dkowalski.com/blog/archive/2014/01/11/f-deedle-and-computational-investing.aspx
当我尝试使用Frame.mapColValues对“库存”框架的所有列应用标准化时,我收到以下错误消息:

System.InvalidOperationException: OptionalValue.Value: Value is not available in Deedle.OptionalValue``1.get_Value() in c:\Tomas\Public\Deedle\src\Deedle\Common\Common.fs:riga 35 in FSI_0046.normalized@52-8.Invoke(ObjectSeries``1 os) in C:\Users\Bruno-Astarita\Documents\Visual Studio 2013\Projects\TestDeedle02\TestDeedle02\TestTutorial01.fsx:riga 52 in <StartupCode$Deedle>.$Series.f@257-13[K,V,R](Func``3 f, Int32 i, K key, V v) in c:\Tomas\Public\Deedle\src\Deedle\Series.fs:riga 358 in <StartupCode$Deedle>.$Series.newVector@354-1.Invoke(Int32 i, Tuple``2 tupledArg) in c:\Tomas\Public\Deedle\src\Deedle\Series.fs:riga 355 in Microsoft.FSharp.Collections.IEnumerator.mapi@129.DoMoveNext(b& ) in Microsoft.FSharp.Collections.IEnumerator.MapEnumerator``1.System-Collections-IEnumerator-MoveNext() in Microsoft.FSharp.Collections.SeqModule.ToArray[T](IEnumerable``1 source) in Microsoft.FSharp.Collections.ArrayModule.OfSeq[T](IEnumerable``1 source) in Deedle.Series``2.Select[R](Func``3 f) in c:\Tomas\Public\Deedle\src\Deedle\Series.fs:riga 352 in Deedle.Series``2.Select[R](Func``2 f) in c:\Tomas\Public\Deedle\src\Deedle\Series.fs:riga 365 in Deedle.SeriesModule.MapValues[T,R,K](FSharpFunc``2 f, Series``2 series) in c:\Tomas\Public\Deedle\src\Deedle\SeriesModule.fs:riga 451 in <StartupCode$FSI_0046>.$FSI_0046.main@() in C:\Users\Bruno-Astarita\Documents\Visual Studio 2013\Projects\TestDeedle02\TestDeedle02\TestTutorial01.fsx:riga 49 Stopped due to error

我试图找到问题,根据FrameModule.fs中的源代码制作分步过程,错误在指令Series.mapValues f处引发。 哪里我错了?
非常感谢。

更新
经过多次测试后,问题似乎是由教程中的行let firstItem = osAsFloat.GetAt(0)引起的。如果我尝试用let firstItem = 2.0代替它,一切都会好的。我还不清楚这种行为。

1 个答案:

答案 0 :(得分:0)

最后我找到了问题的原因。在帧中的某些系列中,存在与第一个元素对应的缺失值。如果我不使用这些系列,一切都还可以。