前言:
- 第一次接触R中调用C,网上搜索这个问题,有关的记录太少了,并且遇到了不少问题,在此记录R中调用C函数的步骤以及遇到的一些问题及解决方案。
- 这也是我的第一篇博客,有何不妥的望指出。
参考链接:
Using R — Calling C Code ‘Hello World!’
Why? 为什么要R、C混编?
R是一个优秀的统计计算语言,但是因为它是解释型语言, 所以在对数组元素的迭代运算方面会很慢。 在R用C语言程序可以既保留R的易用性又可以在必要时提高速度。——忘了从哪看到的了
通俗的讲就是提高运行速度
主要流程:
1:安装 Rtools、mingw并配置环境
2:在RStudio中运行下面两行代码生成dll文件
setwd("H:/test/Rcpp_test") #设置c文件的路径
system("R CMD SHLIB massdistnew.c") #编译c文件
3:载入dll文件并调用C文件的函数:
dyn.load('H:/test/Rcpp_test/massdistnew.dll')
y = .C("massdisttest", x = as.double(xtrunc), xmass = as.double(tau[trunc]/sum(tau[trunc])), nx = nx, xlo = as.double(lo), xhi = as.double(up),y = double(2 * n), ny = as.integer(n))$y