R语言观察日志(part18)--.C和.Call
学习笔记,仅供参考,有错必纠
文章目录
- .C(外来函数接口)
- 描述
- 用法
- 参数
- 细节
- 返回值
- 参数类型
- 注意
- .Call(C/C++代码的接口)
- 描述
- 用法
- 参数
- 细节
- 返回值
.C(外来函数接口)
描述
函数调用已经加载到R中的编译代码。
用法
.C(.NAME, ..., NAOK = FALSE, DUP = TRUE, PACKAGE, ENCODING)
.Fortran(.NAME, ..., NAOK = FALSE, DUP = TRUE, PACKAGE, ENCODING)
参数
参数 | 解释 |
---|---|
.NAME
|
一个字符串,给出C函数 或Fortran子例程 名称,或类"NativeSymbolInfo"、“RegisteredNativeSymbol”,"NativeSymbol"的对象。
|
… | 传递给外部函数的参数 |
NAOK
|
如果为真,则参数中的任何NA 、NaN 或Inf 值都被传递给外部函数。如果为假,NA 、NaN 或Inf 值的存在被认为是错误。
|
PACKAGE
|
如果提供,将搜索字符串.NAME 限制在此参数指定的DLL中,这是为了增加包的安全性,通过使用这个参数可以确保没有其他包可以覆盖它们的外部符号,同时也加快了搜索速度
|
DUP,ENCODING
|
对于向后兼容性,接受但忽略。 |
细节
这些函数可以用来调用编译后的C和Fortran代码。后来的接口是.Call
和.External
,它们更加灵活,性能更好。
这些函数都是原始的,.NAME
总是与提供的第一个参数相匹配
其他被命名的参数如下…
所以不能缩写。为了清晰起见,应该避免在传递给…
的实参中使用名称,匹配或部分匹配.NAME
。
返回值
类似于…
传入的参数列表(包括给参数的任何名称),但反映C或Fortran代码所做的任何更改。
参数类型
R参数的类型映射到C或Fortran参数的类型是:
R | C | Fortran |
---|---|---|
integer | int * | integer |
numeric | double * | double precision |
– or – | float * | real |
complex | Rcomplex * | double complex |
logical | int * | integer |
character | char ** | [see below] |
raw | unsigned char * | not allowed |
list | SEXP * | not allowed |
other | SEXP | not allowed |
注意
如果要经常使用这些函数之一,一定要指定PACKAGE
(将搜索限制在单个DLL中)或将.NAME
作为本机符号对象之一传递。
你可能会看到PACKAGE = "base"
表示链接到R中的符号。
不要在你自己的代码中使用这个符号:这些符号不是API
的一部分,可能在没有警告的情况下被改变。
.Call(C/C++代码的接口)
描述
函数将R对象传递给已编译的C/C++代码,该代码已加载到R中。
用法
.Call(.NAME, ..., PACKAGE)
.External(.NAME, ..., PACKAGE)
参数
参数 | 解释 |
---|---|
.NAME
|
一个字符串,它给出了一个C函数的名字,或者类"NativeSymbolInfo", “RegisteredNativeSymbol”,"NativeSymbol"的对象来指代这样的名字。 |
...
|
传递给编译代码的参数 |
PACKAGE
|
如果提供,将搜索字符串.NAME限制在此参数指定的DLL中;这一参数引出… 因此它的名字不能缩写;这是为了增加包的安全性,通过使用这个参数可以确保没有其他包可以覆盖它们的外部符号,同时也加快了搜索速度。
|
细节
这些函数用于调用编译后的代码,这些代码使用内部R对象,并将参数作为R对象的序列传递给代码。它们采用C调用约定,因此通常也可用于c++代码。
返回值
在编译后的代码中构造的R对象。
R语言观察日志(part18)--.C和.Call相关推荐
- R语言观察日志(part20)--包的组件之R代码
学习笔记,仅供参考,有错必纠 文章目录 R代码 R代码的工作流程 组织函数 代码风格 对象名称 空格 余下的请看R语言观察日志(part16)--Google's R Style Guide 顶层代码 ...
- R语言观察日志(part23)--bibliometrix包
R语言文献计量分析笔记 参考文献:如何用 R 快速了解科研领域?; BiblioShiny使用介绍; R语言快速实现文献计量分析 GitHub:https://github.com/massimoar ...
- R语言观察日志(part16)--Google‘s R Style Guide
学习笔记,仅供参考 自翻,有错必究 文章目录 Google's R Style Guide summary R语言风格 R语言规则 符号和命名 文件名 标识符 每行长度(注意) 缩进 空格 花括号 被 ...
- R语言观察日志(part15)--R的缺点
学习笔记,仅供参考,有错必纠 摘自:基于R语言的机器学习 R的缺点
- R语言观察日志(part4)--paste函数
学习笔记 转载自:R语言中字符串的拼接操作 paste函数 在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量.函数paste的一般使用格式为: paste(..., ...
- R语言观察日志(part8)-RMarkdown之其他语言
学习笔记,仅供参考,有错必纠 参考自:官方文档rmarkdown;R Markdown中配置python R Markdwon 其他语言 我们的.Rmd文件同样可以执行除了R以外的语言,比如: Pyt ...
- R语言观察日志(part17)--.Primitive
学习笔记,仅供参考,有错必纠 文章目录 .Primitive 描述 用法 参数 细节 例子 .Internal 描述 用法 参数 .Primitive 描述 .Primitive通过名字查找一个内部实 ...
- R语言观察日志(part14)--R语言杂记
学习笔记,有错必纠 文章目录 2020年8月杂记 search函数 未命名 向量化计算 ls函数 2020年8月杂记 search函数 search函数可以查看当前环境已加载的R包: R>sea ...
- R语言观察日志(part13)--从GitHub中下载R包
学习笔记,仅供参考,有错必纠 从GitHub中下载R包 这里,我们将介绍两种下载并加载R包的方式,即通过在线安装和本地安装. 在线安装 我们在使用在线安装的方法时,可能会遇到各种各样的问题,这里,我们 ...
最新文章
- 自己动手实现20G中文预训练语言模型示例
- Pycharm上传Gitlab
- poj 3411(DFS多点访问)
- linux删文件进程叫什么,Linux find 查找 并删除文件 杀掉进程
- SAP S/4HANA get custom fields usage的获取逻辑
- 在program A里访问program B local class的两种方式
- Spark Streaming 遇到 kafka
- android 控件高度和图片一样高,Android 根据图片宽高比例设置控件宽高
- java cookie 永久_java web中cookie的永久创建与撤销
- LibMeshEquationSystem 类接口
- 孙鑫VC学习笔记:第十一讲 (二) 图形的保存与重绘方法一
- java代码编写九九乘法表
- 凤凰系统运行linux,开机引导凤凰os出grub
- java 文件比对(四)-- 使用 diffutils
- 增量式PID是什么?不知道你就落伍了
- 如何使用Imperva Incapsula优化和加速您的网站
- Unity打包报错 com.android.buil.gradle.internal.tasks.workers$ActionFacade
- 无线通信模块定点传输-点对点的具体传输应用
- 从西工大图书馆校外下载论文方法
- oracle job enq tx,【学习笔记】Oracle等待事件 enq:TX–allocate ITL entry产生原因和解决办法...