【发布时间】:2012-11-15 09:54:44
【问题描述】:
我想知道是否可以在 C# 中编写用于 R 的包/库。我使用自己的二进制数据存储,它具有非常低的延迟和高吞吐量,并且我在其中存储序列化的值类型(ints/floats/longs ...),并且我也希望能够在 R 中访问相同的数据。我的二进制存储中的值类型都是按时间索引的,但是由于特定的数据结构,我看不到当前访问文件中的整个数据集和 R 中的特定子集的方法。
数据结构如下:
long、float、float:long 是日期和时间戳,float 是时间序列数据。如果这是我对 R 包所需要的,我很高兴重写数据结构以实现标头。我不想用 C 或 C++ 而是用 C# 编写包。有没有办法做到这一点?代码 sn-ps 或描述其完成方式的简短描述或链接将非常棒。
谢谢
【问题讨论】:
-
我不确定这是否可能(我只知道可以以这种方式使用的 rcpp 包),但是here's a thread that might help you。我只知道R(D) COM interface might help you。
-
@rlegendi,这并没有真正帮助,但还是谢谢。我尝试了这个和 R.Net,两者都太慢了,无法将较大的集合作为向量发送到 R。这就是为什么我希望将集合存储在二进制文件中,然后将它们加载到 R 中。CSV 或其他基于文本的格式也太慢了.
-
@JoshuaUlrich,我查看了 Redis,我喜欢我目前所看到的,它相当快,如果我认为 memcache 不能,它可以将数据保存到磁盘。内存映射可能是另一种解决方案,因此,感谢您的建议。让我试试然后回来。
-
@JoshuaUlrich 提到的 mmap 包有一个名为 struct 的函数,它可以让您直接从磁盘将二进制结构读取到 R 中的正确类型列表中。这非常快,并且从 R 中非常简单用户视角。 ?mmap ?types 和 ?struct 充满了例子。