我已经在R方面待了几年。我不做任何核心统计,而是使用R作为复杂的'csv-files'操纵器。尽管如此,我确实需要以分布式方式处理大量数据。
我发现R对我的应用程序来说还不够快,我现在正在调查其他语言。
第一个选择是Python-pandas,它更快。另外,我读到Ocaml可能比python快10倍,这对我来说非常有吸引力。
然而,我发现Ocaml的标准库似乎相当低级。我找不到像R的数据框这样的高级容器。
你们如何在Ocaml中表示数据帧?你使用元组列表?谁能在这里分享一点知识?
谢谢!
答案 0 :(得分:2)
我不得不谷歌在R中的数据框架,不熟悉R,但似乎你正在寻找记录,或者可能是一个记录列表。或者正如您所建议的,如果您添加一些函数来更轻松地访问元组中的数据,那么元组列表可能具有与R数据帧类似的属性。但我认为记录会更接近,因为你可以参考记录中字段的名称。
请参阅Real World OCaml中的Records一章。
答案 1 :(得分:2)
我实际上正在为OCaml开发一个数据帧类。希望我能在几周内完成它。到目前为止,我的进展是在GitHub上。 (注意:github上的当前版本没有100%的功能。)
https://github.com/PamExx/TimeSeries/blob/master/TimeSeries.ml
答案 2 :(得分:1)
如Thomas所述,这种丰富的数据结构将由专业图书馆提供。您可以从记录数组或数组记录开始。如果您的行不仅仅是浮点数,则可能会稍微优先考虑数组记录。但是,对于缓存局部性而言,无论是跨行(然后是记录数组)还是跨列(然后是数组记录),这可能更为重要。请注意,您可能希望将计算基于LACAML或Stream Processing with OCaml等低级库 - 您应该研究它们的API,以获得如何实现高级数据结构的灵感。如果有人提供了真正的高级库,那就太好了!您还可以尝试使用OCaml-R同时使用OCaml和R.