Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何迭代F#中的一条记录,并将数据转换为新记录_F# - Fatal编程技术网

如何迭代F#中的一条记录,并将数据转换为新记录

如何迭代F#中的一条记录,并将数据转换为新记录,f#,F#,我正在尝试使用fsharp解析文件并将其转换为数据模型 let name = 'Ron' let date = '10/6/2020' let rawData = [|{ time = 15 pressure = 50 force = 100}; {time = 16 pressure = 55 force = 110}; {time = 17 pressure = 60 force =

我正在尝试使用fsharp解析文件并将其转换为数据模型

let name = 'Ron'    
let date = '10/6/2020'
let rawData =
     [|{
     time = 15
     pressure = 50
     force = 100};
     {time = 16
     pressure = 55
     force = 110};
     {time = 17
     pressure = 60
     force = 120
     }|]
我希望将数据转换为.csv格式,但我的中间步骤是将其保存在记录中。所需的输出如下所示

name  |   date    |  parameter  |  value
_______________________________________
 Ron  | 10/6/2020 |     time    |  15
 Ron  | 10/6/2020 |   pressure  |  50
 Ron  | 10/6/2020 |    force    |  100
 Ron  | 10/6/2020 |     time    |  16
 Ron  | 10/6/2020 |   pressure  |  55
 Ron  | 10/6/2020 |    force    |  110
 Ron  | 10/6/2020 |     time    |  17
 Ron  | 10/6/2020 |   pressure  |  60
 Ron  | 10/6/2020 |    force    |  120

我知道我需要创建一个新记录,但如何以这种方式添加常量。

你的问题并没有很清楚地说明你到底在做什么。但是,如果我想解决这个问题,我可能会使用。给定具有正确缩进的数据:

let name = "Ron"
let date = "10/6/2020"
let rawData =
  [|  {| time = 15; pressure = 50; force = 100|}
      {| time = 16; pressure = 55; force = 110|}
      {| time = 17; pressure = 60; force = 120|} |]
通过映射原始数据并创建包含常量和数据本身的元组,可以将其转换为CSV文件。一旦你有了它,你就可以使用记录的
将它转换成数据帧。Deedle中的巧妙之处在于
expandAllCols
函数,该函数将嵌套记录转换为多列,因此最终的数据框有五列:

let df = 
  rawData
  |> Array.map (fun data -> name, date, data)
  |> Frame.ofRecords
  |> Frame.expandAllCols 1
  |> Frame.indexColsWith ["name";"date";"time";"pressure";"force"]

df.SaveCsv("c:/temp/test.csv", includeRowKeys=false)

使用元组和展开得到的列名很难看,因此我使用
indexColsWith
重命名它们,然后我们可以将文件另存为CSV。

您的问题并不能很清楚地说明您到底在做什么。但是,如果我想解决这个问题,我可能会使用。给定具有正确缩进的数据:

let name = "Ron"
let date = "10/6/2020"
let rawData =
  [|  {| time = 15; pressure = 50; force = 100|}
      {| time = 16; pressure = 55; force = 110|}
      {| time = 17; pressure = 60; force = 120|} |]
通过映射原始数据并创建包含常量和数据本身的元组,可以将其转换为CSV文件。一旦你有了它,你就可以使用记录的
将它转换成数据帧。Deedle中的巧妙之处在于
expandAllCols
函数,该函数将嵌套记录转换为多列,因此最终的数据框有五列:

let df = 
  rawData
  |> Array.map (fun data -> name, date, data)
  |> Frame.ofRecords
  |> Frame.expandAllCols 1
  |> Frame.indexColsWith ["name";"date";"time";"pressure";"force"]

df.SaveCsv("c:/temp/test.csv", includeRowKeys=false)

使用元组和展开得到的列名很难看,因此我使用
indexColsWith
重命名它们,然后我们可以将文件保存为CSV。

我无法使该代码正常工作,我得到
testing.fsx(124,1):错误FS0010:运行
|>Frame.indexColsWith[“name”;“date”时,交互中意外的中缀运算符“时间”;“压力”;“强制”]
我无法让该代码正常工作,我得到了
测试.fsx(124,1):错误FS0010:当我运行
|>Frame.indexColsWith[“名称”;“日期”;“时间”;“压力”;“强制”]