楼主: CDA网校
959 0

[数据挖掘新闻] 用C语言为R语言写扩展模块的几点体会——CDA人工智能学院 [推广有奖]

管理员

已卖:189份资源

泰斗

4%

还不是VIP/贵宾

-

威望
3
论坛币
123742 个
通用积分
11669.0657
学术水平
278 点
热心指数
286 点
信用等级
253 点
经验
230647 点
帖子
7048
精华
19
在线时间
4400 小时
注册时间
2019-9-13
最后登录
2026-2-5

初级热心勋章

楼主
CDA网校 学生认证  发表于 2021-5-6 13:55:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
CDA人工智能学院致力于以优质的人工智能在线教育资源助力学员的DT职业梦想!课程内容涵盖数据分析机器学习深度学习人工智能tensorFlowPyTorch知识图谱等众多核心技术及行业案例,让每一个学员都可以在线灵活学习,快速掌握AI时代的前沿技术。PS:私信我即可获取CDA会员1个月免费试听机会

1. 由于R是向量语言,所用简单变量均为向量,所以参数传递时均是传递的指针。矩阵也可当成向量来处理,不过是一列接一列,是一长向量。

2. 尽量用 R 的函数 R_alloc 来申请内存,这样R将能自动回收,不必自己去 free。
3. 最好使用 R_CMethodDef cMethods[] 和 R_init_myLib(DllInfo *info) 登记C函数。
4. 在NAMESPACE文件中加入两行:

exportPattern("^[^\\.]")

useDynLib(DLL_name)
第一行输出所有不是以'.'开头的函数名;
第二行中动态包不用扩展名(.so 或 .dll),这样,在R包中通过 library.dynam(“DLL_name”, “package_name“) 装入动态库后,就可以直接使用C扩展函数了,否则,在 library(package_name)之后,还必须动态装入 (dyn.load)DLL才行。

5. 用 R CMD SHLIB 可以编译产生动态库。打包则为:
Linux下:
    R CMD build project_dir
windows下,需要先安装编译环境。可用 Rtools (http://www.murdoch-sutherland.com/Rtools/)来安装。还可安装微软的htmlhelp.exe。然后运行命令:
    Rcmd build --force --binary project_dir




扫码关注CDA公众号,即可获取最新版数据分析题库大全CDA免费精品课70+


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:人工智能 扩展模块 R语言 C语言 CDA

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-5 11:09