将 R 代码转换为 C 代码

2024-02-03

出于速度原因以及将其打包为 .exe 的能力,我正在考虑将 R 脚本转换为 C 代码。我是 C 新手。

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

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


我会尽力回答这个问题。

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

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

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

问:用 C 语言可以更快地完成大向量的排序吗?

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

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 中使用其中一些库来提高性能!)。

有关 BLAS 的更多信息 http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms

另一种方法是从 R 到 C 进行 .Call,然后您就可以访问 R 的所有功能!这inline包和Rcpp包可以让事情变得更容易。

第三种方法是将 R 嵌入到您的应用程序中。Rinside可以帮助让这变得更容易。

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

答:看看fopen and fscanf功能。 ...并使用它们编写数据导入函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 R 代码转换为 C 代码 的相关文章

随机推荐

  • Redis“客户端列表”用途和说明

    在执行 客户端列表 时 我得到以下结果 每个标志的含义是什么 奴隶 addr 100 0 0 0 0000 fd 5 空闲 3 标志 S db 0 sub 0 psub 0 qbuf 0 obl 0 oll 0 事件 r cmd sync
  • 签名板和 dompdf

    我在用托马斯 J 布拉德利的插件 http thomasjbradley ca lab signature pad 用于在 html 表单底部绘制两个签名 然后使用 dompdf 将其转换为 pdf 并使用 sendmail 作为附件通过电
  • Cumulocity smarREST 响应模板

    我正在尝试设置 Cumulocity smartREST 响应模板以提供应用程序存储的设备对象的信息 我认为这是不可能的 但我想确认一下 因为文档很简短而且不清楚 我之前已经成功实现了测量发布模板 但我现在正在尝试执行库存获取 我已经在设备
  • Delphi 中 JSON 与 XML 解析速度

    我们正在创建一个使用大量 XML 解析的应用程序 我想也许可以使用 JSON 因为我们可以使用 JSON 作为 XML 的替代品 我需要测试 JSON 或 XML 哪个更快 但想先在这里征求意见 JavaScript 中的 JSON 是原生
  • PHP 错误处理适用于 MySQL 和 MySQLi,但不适用于 PDO

    我刚刚将一堆 MySQL 和 MySQLi 表单重构为 PDO 一切似乎都正常 现在开始错误处理 在我一直使用的 MySQL MySQLi 代码中if语句来捕获错误 像这样 if database connection error hand
  • 如何减小我从 keras 转换的 .tflite 的大小

    我刚刚转换了一个Keras model h5 resnet50 img classify 在谷歌上创建COLAB to tflite但尺寸只是减小了0 5 MB 这是针对移动应用程序的 大小应该进一步减小 它大约有 90MB 对于生产来说太
  • 使用 jQuery 根据原始值修改每个文本字段的值

    是否可以使用 jQuery 或 JavaScript 根据原始值修改网页中存在的每个文本字段的值 例如 假设一个页面中有 50 个文本字段 我想删除每个文本字段值的开头和结尾的空格 我认为单独为每个文本字段调用该函数并不是一个好主意 如何在
  • PHP 中的 __call、__callStatic 和调用范围

    我最近读到有关在 PHP 中调用作用域和作用域解析运算符 的内容 有两种变体 实例调用和静态调用 考虑以下听力
  • sencha 中的按钮背景颜色

    我是 sencha touch 的新手 我们如何将按钮的背景颜色更改为白色 我有一个按钮 每个角都有两个图像 我希望按钮是纯白色的 我尝试使用这样的CSS quest background url images quest jpg no r
  • 只允许在 JTextField 中输入数字和符号 (-)

    我正在尝试创建一个数学测验 我只希望用户能够输入数字 无论它们是负数还是正数 有什么办法可以做到吗 我曾考虑过使用正则表达式 但听说它们不好用 我尝试使用按键侦听器 但是如果用户粘贴怎么办 我尝试解析字符串以获取整数 但负号将不起作用 有任
  • 如何在 VB.NET 中使用 RhinoMocks 设置只读属性的返回值?

    我在 VB NET 中使用 RhinoMock 需要设置只读列表的返回值 这就是我的want要做 但不起作用 dim s Rhino Mocks MockRepository GenerateStub of IUserDto s Id gu
  • 如何在不启用USB调试的情况下使用adb tcpip?

    我已经阅读了很多关于 adb 和 tcpip 模式的文章 并且我可以创建无线 adb 连接 但前提是打开 USB 调试 我使用它的方式是这样的 USB调试已启用 call adb tcpip在计算机上 从 USB 切换到 tcpip 模式
  • 如何在Windows后台持续运行Python脚本?

    我创建了一个脚本 将文件从一个文件夹移动到另一个文件夹 但由于原始文件夹是下载文件夹 我需要它始终在后台运行 我还有一个标准批处理文件 如下所示 py C Python Scripts moveDLs py 我在用着Windows 10 我
  • 在soap标头中添加wsse:UsernameToken

    我正在开发 SOAP 客户端 我的 WSDL URL 是http localhost 8080 soap getMessage wsdl 这需要以下标头来指定用户名和密码
  • 句子分类(Categorization)

    我一直在阅读有关文本分类的内容 并找到了几个可用于分类的Java工具 但我仍然想知道 文本分类与句子分类相同吗 有没有专注于句子分类的工具 文本分类 和 句子分类 之间没有正式的区别 毕竟 句子是一种文本 但一般来说 当人们谈论文本分类时
  • mediaelement.js 同一页面上有多个视频?

    我试图将多个视频放在一个页面上 但是当我单击一个视频进行播放时 它们都会播放吗 还有其他人经历过吗 这是我使用的代码片段 video audio mediaelementplayer success function player node
  • 将每周时间系列扩展到每日

    我有一个每周值的 xts 时间序列 Jan 4 2004 0 99 Jan 11 2004 1 11 Jan 18 2004 1 06 我想将其转换为每日值 Jan 4 2004 0 99 Jan 5 2004 0 99 Jan 6 200
  • Windows Phone 8.1 与 Windows Phone Silverlight 8.1 - MSDN 上是否缺少文档?

    我正在尝试将一些 NET 代码移植到 Windows Phone 8 1 不是 Silverlight 库 并且已经用头撞墙一段时间了 现在试图理解为什么System Net IPAddress不可用 根据Windows Phone MSD
  • 线程“main”中的异常 java.lang.NoSuchMethodError: scala.Predef$.refArrayOps( [重复]

    这个问题在这里已经有答案了 我是 scala 新手 INTELLIJ 中的代码出现以下错误 任何人都可以帮助解决它 import org apache spark SparkContext SparkConf object wordcoun
  • 将 R 代码转换为 C 代码

    出于速度原因以及将其打包为 exe 的能力 我正在考虑将 R 脚本转换为 C 代码 我是 C 新手 我的问题是用 C 语言会明显更快吗 速率限制步骤是一种必须对大向量多次应用的排序算法 我不确定 R 中的矢量化功能是否会对此有所帮助或减慢速