2017-03-21 21 views
3

Frame.tryValuesのヘルプには、以下があります。この単純な例でFrame.tryValuesが失敗するのはなぜですか?

「タイプtryval<'T>の列を含むデータフレームを考えると、タイプ'Tの基礎となる値を含む新しいデータフレームを返します。」

これは、関数が値tryvalを取り除き、それらの取り除かれた値を返すことを意味すると解釈しました。関数は次のような場合には失敗したので、たぶん私は、テキストを理解していなかった。

let dates = 
    [ DateTime(2013,1,1); 
    DateTime(2013,1,2); 
    DateTime(2013,1,3) ] 

let values = [ 10.0; 20.0; 30.0 ] 

let first = Series(dates, values) 

let frame = Frame(["first"], [first]) 

let f (dt: DateTime) (row: ObjectSeries<string>) = row.Get("first") :?> double 

let s = 
    frame 
    |> Frame.tryMapRows f 

// frame1's second column has tryvalues 
let frame1 = Frame(["first"; "second"], [first; s]) 
// frame2 has no tryvalues 
let frame2 = Frame(["first"; "second"], [first; first]) 

let frame3 = 
    frame1 
    |> Frame.tryValues 
// fails 

let frame3 = 
    frame2 
    |> Frame.tryValues 
// Ok, works fine 

はなぜFrame.tryValuesの最初の呼び出しは、上記に失敗んが、2番目はないでしょうか?

答えて

4

これはDeedleのバグであることが判明しました。私はそれを見て、submitted a PR with a fix

+0

スライスされたパン( 'F#'宇宙)の中で、 'ディードル'が最高のものだと思います。そして私はその改善に少し貢献したことを誇りに思います。どうもありがとう。 – Soldalma

+0

あなたは 'SO 42912346'を見てみたいかもしれません。私はそこにバグがあると思う。 – Soldalma

関連する問題