我有seq<Nullable<int>>
,需要创建好的情节,但没有空值。
这是我的代码:
open System
#r """..\packages\FSharp.Charting.0.90.14\lib\net40\FSharp.Charting.dll"""
#load """..\packages\FSharp.Charting.0.90.14\FSharp.Charting.fsx"""
open FSharp.Charting
//in a real world replaced by .csv with empty values
let seqWithNullInt = seq[Nullable 10 ; Nullable 20 ; Nullable (); Nullable 40; Nullable 50]
//let seqWithNullInt = seq[ 10 ; 20 ; 30; 40; 50] //works fine
let bothSeq = seqWithNullInt |> Seq.zip {1..5}
Chart.Line bothSeq // Error because of nullable int
这是我的愿景:
如何跳过空值?我不想用最近的东西替换它们,我需要从图表中跳过它们。有什么解决方案吗?
答案 0 :(得分:2)
这样的事情可能有用(注意我使用了Option
值而不是nullables,因为这在F#中更为惯用):
let neitherPairHasNoneInValue (pair1, pair2) =
pair1 |> snd |> Option.isSome && pair2 |> snd |> Option.isSome
let seqWithNone = Seq.ofList [Some 10; Some 20; None; Some 40; Some 50]
let pairsWithoutNone = seqWithNone
|> Seq.zip {1..5}
|> Seq.pairwise
|> Seq.filter neitherPairHasNoneInValue
printfn "%A" pairsWithoutNone
这将输出[(1,10),(2,20) ; (4,40),(5,50)]
。我不知道FSharp.Charting API,所以我无法告诉你哪个函数将采用X,Y对的列表并绘制你想要的图形,但它应该相对直截了当从那里到你的图表。