• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

R语言调用C函数-旧版本C语言包转移

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

R 2.14.0源码中有函数 massdist.c 函数,在 R 3.5.1 中该函数发生了改变,但是有一个软件包 kerfdr 需要调用 2.14.0 中的该 C 函数,为了便于后续程序的发展。

现欲将 老版本的 massdist.c ( 从R 2.14.0 源码中找到 massdist.c 修改名为 massdistnew.c ,内部函数命名为masstest.c) 函数转移到 R 3.5.1中:

1:安装 Rtools

2:安装 mingw

3 : 将Rtools 安装文件中的bin 以及mingw的 bin 文件添加到环境变量中

4:在R语言中运行下面两行代码生成dll文件

   setwd("H:/test/Rcpp_test")

   system("R CMD SHLIB massdistnew.c")

5:载入dll文件

     dyn.load('H:/test/Rcpp_test/massdistnew.dll')

6:  在调用函数时原始的调用方式为:

# mass distribution according to tau
  y = .C("massdist", 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), PACKAGE = "stats")$y

 

  修改为:

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

 

  以上处理之后kerfdr即可在 R 3.5.1 中运行

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言简介与案例发布时间:2022-07-18
下一篇:
R语言中如何在函数内部定义全局变量发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap