【问题标题】:FSharp R.data_frameFSharp R.data_frame
【发布时间】:2013-11-11 20:30:09
【问题描述】:

我正在通过 .csv 类型提供程序从 .csv 中获取一些数据,并将其放入供 R 使用的数据框中。

这里是导入:

#r @"..\packages\R.NET.1.5.5\lib\net40\RDotNet.dll"
#r @"..\packages\RDotNet.FSharp.0.1.2.1\lib\net40\RDotNet.FSharp.dll"
#r @"..\packages\RProvider.1.0.3\lib\RProvider.dll"
#r @"..\packages\FSharp.Data.1.1.10\lib\net40\FSharp.Data.dll"

open System
open RDotNet
open RProvider
open RProvider.``base``
open RProvider.graphics
open FSharp.Data.Csv
open System.IO

let data = CsvFile.Load(@"C:\TEST.csv")
let date = data.Data |> Seq.map(fun r -> r.Columns.[3])
let time = data.Data |> Seq.map(fun r -> r.Columns.[10])
let disposition = data.Data |> Seq.map(fun r -> r.Columns.[11]);

let month = data.Data |> Seq.map(fun r -> r.Columns.[4])
let time2 = data.Data |> Seq.map(fun r -> r.Columns.[7])

当我尝试创建数据框时,出现以下异常 - 无论我尝试加载的数据类型如何:

System.Exception: 没有为类型 Microsoft.FSharp.Collections.FSharpList1[[System.Tuple2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089] 注册转换器,[ System.Collections.Generic.IEnumerable`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] , mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 或其任何基本类型

这是 DF 负载的示例。

let namedParameters = [
    "month",month;
    "time",time2;]


namedParameters
|> R.data_frame
|> R.plot

问题是 - 有 int 数据类型。是在捡头吗?我需要投吗?如果是这样,这不是类型提供程序的用途吗?我错过了什么?提前致谢。

【问题讨论】:

    标签: r f# type-providers


    【解决方案1】:

    您需要的R.data_frame 重载是采用键值对字典的重载。您可以自己构建这个字典,也可以使用 R 类型提供程序库中包含的 namedParams 函数。

    为避免混淆,我将您的配对列表重命名为 df。然后你可以像这样创建一个框架:

    let df = 
      [ "month", month
        "time", time2 ]
    
    namedParams df
    |> R.data_frame
    |> R.plot
    

    PS:您是否有任何理由使用 CsvFile 动态读取数据,而不是使用 CSV type provider 应该(假设它适用于您的输入)为您提供对 CSV 数据的更好和类型化的数据访问?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多