我正在关注一个教程:
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
代替它,一切都会好的。我还不清楚这种行为。
答案 0 :(得分:0)
最后我找到了问题的原因。在帧中的某些系列中,存在与第一个元素对应的缺失值。如果我不使用这些系列,一切都还可以。