网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

php开发技术团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 开发技术 > php开发技术 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

R语言调用C语言动态链接库

文章来源:网络收集 发布时间:2019-07-12 23:14:54 围观次数:
分享到:

摘要:R语言一直是数据分析师广泛使用的工具,因为它具有强大的统计计算能力和可视化。 但它的一大缺点是它在大规模计算中不够快,这也是每个人都受到批评的一点

R语言一直是数据分析师广泛使用的工具,因为它具有强大的统计计算能力和可视化。 但它的一大缺点是它在大规模计算中不够快,这也是每个人都受到批评的一点。 该问题的一个解决方案是将大量统计计算过程转移到底层语言,例如C语言,C等。 下面简要介绍如何结合R语言和C语言来提高统计计算的速度。

  首先让我们看一下使用R语言完成循环的示例:

a <- Sys.time()
n <-10
for( i in c(1:n)){
  print('helloword')
}
b <- Sys.time()
print(paste0('耗时R:',as.numeric(b-a)))
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "helloword"
[1] "耗时R:0.00289702415466309"

  如果您使用C来完成此过程:

#include <R.h>
#include <Rmath.h>
 
void hello(int *n){
int i;
for (i=0; i< *n; i++) {
Rprintf("Hello, world!\n");
}
}

将脚本命名为helloword2.C并编译C脚本:

  确保系统已加载gcc,然后在命令行或终端中执行。

  R CMD SHLIB helloword2.c


  然后,您可以在当前目录中看到helloword2.so或helloword2.dll文件。 如果是windows系统,则调用.dll文件,linux系统调用.so文件。 这是一个.so文件的示例。

  首先在R中导入helloword2.so文件,首先使用setwd查找.so文件的目录,然后使用dyn.load函数导入文件。

  Setwd( '/用户的/ usr /桌面/测试')

  Dyn.load( “helloword2.so”)

  导入成功后,将使用.C()函数调用它。

a <- Sys.time()
n <-10
.C('hello',as.integer(n))
b <- Sys.time()
print(paste0('耗时C:',as.numeric(b-a)))
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
[[1]]
[1] 10
[1] "耗时C:0.00203609466552734"

  这是对R环境中C语言程序的成功调用。 可以注意到,C语言执行10个周期,大约需要0.002036秒,并且R语言执行相同的过程并且需要0.002897。  C的性能优于R,尤其是在大规模数据计算中。

本文由 网络收集 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:R语言 C语言 动态链接库

上一篇:smbinning包:R语言下的分箱处理工具预处理方法
下一篇:最后一页

热门资讯

鼠标向下滚动