gpt4 book ai didi

r - 在哪里可以学习如何编写 C 代码来加速缓慢的 R 函数?

转载 作者:行者123 更新时间:2023-12-03 04:40:23 25 4
gpt4 key购买 nike

学习如何编写与 R 一起使用的 C 代码的最佳资源是什么?我知道system and foreign language interfaces R 扩展的一部分,但我发现它很难进行。编写与 R 一起使用的 C 代码有哪些好的资源(在线和离线)?

澄清一下,我不想学习如何编写 C 代码,我想学习如何更好地集成 R 和 C。例如,如何从 C 整数向量转换为 R 整数向量(或反之亦然)或从 C 标量到 R 向量?

最佳答案

嗯,有一个很好的老使用源代码,Luke! --- R 本身有大量(非常有效的)C 代码可以研究,CRAN 有数百个包,其中一些来自作者你信任。这提供了真实的、经过测试的示例来学习和适应。

但正如 Josh 怀疑的那样,我更倾向于 C++,因此 Rcpp 。它还提供了大量示例。

编辑:我发现有两本书很有帮助:

  • 第一本是 Venables 和 Ripley 的“S 编程”,尽管它已经过时了(多年来一直有关于第二版的传言)。当时根本就没有别的事情。
  • 钱伯斯的“数据分析软件”中的第二个,它更新得多,并且具有更好的以 R 为中心的感觉 - 以及关于扩展 R 的两章。C 和 C++ 都被提及。另外,约翰因为我对digest所做的事情而撕碎了我。所以仅此一点就值回票价了。

也就是说,约翰越来越喜欢 Rcpp (并做出了贡献),因为他发现 R 对象和 C++ 对象之间的匹配(通过 Rcpp )非常自然——而 ReferenceClasses 在这方面提供了帮助。

编辑 2:随着 Hadley 重新调整问题的焦点,我非常强烈敦促您考虑 C++。有太多与 C 相关的样板废话——非常乏味且非常可以避免。看看Rcpp-introduction vignette 。另一个简单的例子是 this blog post我在其中表明,不用担心 10% 的差异(在 Radford Neal 的一个示例中),我们可以使用 C++ 获得八倍的增长(这当然是一个人为的示例)。

编辑 3: 复杂性在于您可能会遇到 C++ 错误,温和地说,这些错误很难理解。但是如果只是使用 Rcpp 而不是扩展它,那么您几乎不需要它。虽然这种成本是不可否认的,但与更简单的代码、更少的样板文件、无保护/取消保护、无内存管理等的好处相比,它远远黯然失色,pp. Doug Bates 就在昨天表示他发现 C++ 和 Rcpp 更像是编写 R,而不是编写 C++。 YMMV 等等。

关于r - 在哪里可以学习如何编写 C 代码来加速缓慢的 R 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106174/

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