1

前の質問: F# フィルタリングの複数年

データ セット内の任意の 2 月の降水量が最大である 2 年の int リストを返す必要があります。

これまでのところ、List.maxBy を使用して最初の年を見つけましたが、これは最初の最大値のみを返すと思います。

let rainfall
    ds |> List.filter (fun s-> month(s)=2)
       |> List.maxBy rain
       |> year

では、1 番目と 2 番目の両方を表示するにはどうすればよいでしょうか。

4

2 に答える 2

0

List.sort雨の降順でソートし、最初の 2 つの要素を取る提供関数を使用する

于 2015-02-26T16:38:26.220 に答える
0

おそらく降順に並べ替える必要があります。

let rainfall
    ds |> Seq.filter (fun s-> month(s)=2)
       |> Seq.sortBy (fun m -> -(rain m)) //Sort by the value of rain negated
       |> Seq.take 2
       |> Seq.toList

そして、最初の 2 を取得します。

これにより、降水量が最も多い項目と 2 番目に多い項目の 2 つの項目のリストが表示されます。

それらを別々の値にしたい場合は、次のことができます。

let most = ds |> List.nth 0
let secondMost = ds |> List.nth 1
于 2015-02-26T16:38:34.610 に答える