gpt4 book ai didi

将 R 代码转换为 C 代码

转载 作者:太空狗 更新时间:2023-10-29 16:54:02 26 4
gpt4 key购买 nike

我正在考虑将 R 脚本转换为 C 代码,以提高速度并能够将其打包为 .exe。我是 C 的新手。

我的问题是它在 C 中会明显更快吗?速率限制步骤是一种排序算法,必须对大 vector 应用很多次。我不确定 R 中的矢量化功能是否会对此有所帮助或减慢速度。我还读到 for 循环在 R 中效率低下。

如果我应该在 C 中执行此操作,哪些库可以帮助我模仿 R 的一些数据处理功能,如基本矩阵操作?我应该从哪里着手?现在我什至不知道如何将我的数据读入 C(逗号分隔的文本文件)。

最佳答案

我会尽量回答这个问题。

...但是您没有问的问题可能更相关:R 算法能否在 R 中变得更快?这里的答案通常是"is"。它可以“足够快”吗?好吧,如果不尝试(并查看当前的 R 代码),这是不可能回答的。

问:我的 R 算法在 C 中会更快吗?

答:是的!如果您为该算法编写“最佳”C 代码,它很可能会更快。这样做很可能还需要很多工作。

问:用 C 语言可以更快地对大 vector 进行排序吗?

答:是的。使用多线程,可以大大提高速度。 ...但首先在 R 中调用 sort(x, method='quick') 看看是否有改进!对于随机数据,默认方法不是很快。

x <- runif(1e7)
system.time( sort(x) ) # 2.50 secs
system.time( sort(x, method='quick') ) # 1.37 secs
#system.time( tommysort(x) ) # 0.51 secs (4 threads)

问:哪些库模仿了基本的 R 函数?

答:LAPACK/BLAS 在 R 中处理矩阵数学。如果这就是您所需要的,您可以找到比 R 中的原始库快得多的库(您也可以在 R 中使用其中的一些来提高性能!)。

More info on BLAS

另一种方法是从 R 到 C 进行 .Call 调用,然后您可以从那里访问 R 的所有功能! inline 包和 Rcpp 包可以帮助简化它。

第三种方法是将 R 嵌入到您的应用程序中。 Rinside 可以帮助简化这一过程。

问:如何将 CSV 数据读入 C?

答:查看fopenfscanf 函数。 ...并使用它们编写数据导入功能。

关于将 R 代码转换为 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10143485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com