F#,Deddle和R.Net:seq<';a>;[]与IEnumerable数组
我正在尝试使用R.Net将Deedle帧转换为R数据帧 我尝试了3种不同的方法:F#,Deddle和R.Net:seq<';a>;[]与IEnumerable数组,.net,functional-programming,f#,deedle,r.net,.net,Functional Programming,F#,Deedle,R.net,我正在尝试使用R.Net将Deedle帧转换为R数据帧 我尝试了3种不同的方法: open RDotNet REngine.SetEnvironmentVariables(@"C:\Program Files\R\R-3.6.3\bin\x64",@"C:\Program Files\R\R-3.6.3") let engine = REngine.GetInstance() //Deedle with columns x and y and with all the values as
open RDotNet
REngine.SetEnvironmentVariables(@"C:\Program Files\R\R-3.6.3\bin\x64",@"C:\Program Files\R\R-3.6.3")
let engine = REngine.GetInstance()
//Deedle with columns x and y and with all the values as floats
let d = Frame.ReadCsv(@"C:\Users\flavi\Downloads\test.txt")
let a1 =
([],d.ColumnKeys)
||> Seq.fold (fun acc elem -> (d |> Frame.getCol elem |> Series.values |> Seq.map float)::acc) |> List.toArray
let a2 =
[|
d |> Frame.getCol "x" |> Series.values |> Seq.map float
d |> Frame.getCol "y" |> Series.values |> Seq.map float
|]
let (a3 : IEnumerable array) =
[|
d |> Frame.getCol "x" |> Series.values |> Seq.map float
d |> Frame.getCol "y" |> Series.values |> Seq.map float
|]
//only works with a3
let rFrame = engine.CreateDataFrame(a3,d.ColumnKeys |> Seq.map string |> Seq.toArray)
a1(我想使用的那个)和a2具有相同的签名:seqIEnumerable
数组,但a1是一个seq
数组,这是F#的说法IEnumerable
;你只需要再投一次。这为我编译(尽管我还没有实际运行它):
a1=
d、 柱键
|>顺序折叠
(趣味acc键->
让价值观=
D
|>Frame.getCol键
|>系列值
|>Seq.map unbox
值::acc)
[]
|>Seq.map(乐趣浮动->浮动:>IEnumerable)
|>序号:toArray
谢谢!“|>Seq.map(乐趣浮动->浮动:>IEnumerable)”解决了我的问题!
let a1 =
d.ColumnKeys
|> Seq.fold
(fun acc key ->
let values =
d
|> Frame.getCol key
|> Series.values
|> Seq.map unbox<float>
values::acc)
[]
|> Seq.map (fun floats -> floats :> IEnumerable)
|> Seq.toArray