R中的LIM包:更快地读取输入

时间:2014-03-02 15:59:27

标签: r

为了解决R中的线性逆模型,有一个名为LIM(http://cran.r-project.org/web/packages/LIM/)的优秀包。 模型问题以自然和易于理解的方式在文本文件中制定。 LIM中的函数然后将此输入转换为所需的线性相等和不等式条件,这可以通过最小二乘法或线性编程技术求解。

我的文字File约有。 6000行(简单的等式,不等式,组件,参数列表),它描述了线性逆模型。 我通过以下两行将其提供给R进行处理

liminput <- Read(File)
lim <- Setup(liminput)

问题: 2条线需要大约5分钟才能运行。 第一行Read命令几乎占据了这5分钟的100%。

问题: 有没有办法让它更快?

1 个答案:

答案 0 :(得分:1)

我认为这不会有一个非常简单的答案;您可能需要找到一些方法来重写Read()函数以获得更好的速度(但请参见下面的一种可能性)。详细查看Read()函数(如果您不知道,可以通过键入Read来打印源代码),它实际上是在读取行并在R代码中解析它们。大多数这些操作可能很难进行矢量化,并且在Rcpp / C ++中重写的难度很大......

Noam Ross写了一篇very accessible guide to speeding up R code(其中一项建议是“获得更好的电脑”)。实际上只有一个“低悬的果实”建议可能无需自己深入研究代码,即使用R的字节编译器:

library(compiler)
Read.comp <- cmpfun(Read)
Read.comp(File)  ## **maybe** faster than Read(File) ...