学习笔记,仅供参考,有错必纠


文章目录

  • .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 如果为真,则参数中的任何NANaNInf值都被传递给外部函数。如果为假,NANaNInf值的存在被认为是错误。
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相关推荐

  1. R语言观察日志(part20)--包的组件之R代码

    学习笔记,仅供参考,有错必纠 文章目录 R代码 R代码的工作流程 组织函数 代码风格 对象名称 空格 余下的请看R语言观察日志(part16)--Google's R Style Guide 顶层代码 ...

  2. R语言观察日志(part23)--bibliometrix包

    R语言文献计量分析笔记 参考文献:如何用 R 快速了解科研领域?; BiblioShiny使用介绍; R语言快速实现文献计量分析 GitHub:https://github.com/massimoar ...

  3. R语言观察日志(part16)--Google‘s R Style Guide

    学习笔记,仅供参考 自翻,有错必究 文章目录 Google's R Style Guide summary R语言风格 R语言规则 符号和命名 文件名 标识符 每行长度(注意) 缩进 空格 花括号 被 ...

  4. R语言观察日志(part15)--R的缺点

    学习笔记,仅供参考,有错必纠 摘自:基于R语言的机器学习 R的缺点

  5. R语言观察日志(part4)--paste函数

    学习笔记 转载自:R语言中字符串的拼接操作 paste函数 在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量.函数paste的一般使用格式为: paste(..., ...

  6. R语言观察日志(part8)-RMarkdown之其他语言

    学习笔记,仅供参考,有错必纠 参考自:官方文档rmarkdown;R Markdown中配置python R Markdwon 其他语言 我们的.Rmd文件同样可以执行除了R以外的语言,比如: Pyt ...

  7. R语言观察日志(part17)--.Primitive

    学习笔记,仅供参考,有错必纠 文章目录 .Primitive 描述 用法 参数 细节 例子 .Internal 描述 用法 参数 .Primitive 描述 .Primitive通过名字查找一个内部实 ...

  8. R语言观察日志(part14)--R语言杂记

    学习笔记,有错必纠 文章目录 2020年8月杂记 search函数 未命名 向量化计算 ls函数 2020年8月杂记 search函数 search函数可以查看当前环境已加载的R包: R>sea ...

  9. R语言观察日志(part13)--从GitHub中下载R包

    学习笔记,仅供参考,有错必纠 从GitHub中下载R包 这里,我们将介绍两种下载并加载R包的方式,即通过在线安装和本地安装. 在线安装 我们在使用在线安装的方法时,可能会遇到各种各样的问题,这里,我们 ...

最新文章

  1. 自己动手实现20G中文预训练语言模型示例
  2. Pycharm上传Gitlab
  3. poj 3411(DFS多点访问)
  4. linux删文件进程叫什么,Linux find 查找 并删除文件 杀掉进程
  5. SAP S/4HANA get custom fields usage的获取逻辑
  6. 在program A里访问program B local class的两种方式
  7. Spark Streaming 遇到 kafka
  8. android 控件高度和图片一样高,Android 根据图片宽高比例设置控件宽高
  9. java cookie 永久_java web中cookie的永久创建与撤销
  10. LibMeshEquationSystem 类接口
  11. 孙鑫VC学习笔记:第十一讲 (二) 图形的保存与重绘方法一
  12. java代码编写九九乘法表
  13. 凤凰系统运行linux,开机引导凤凰os出grub
  14. java 文件比对(四)-- 使用 diffutils
  15. 增量式PID是什么?不知道你就落伍了
  16. 如何使用Imperva Incapsula优化和加速您的网站
  17. Unity打包报错 com.android.buil.gradle.internal.tasks.workers$ActionFacade
  18. 无线通信模块定点传输-点对点的具体传输应用
  19. 从西工大图书馆校外下载论文方法
  20. oracle job enq tx,【学习笔记】Oracle等待事件 enq:TX–allocate ITL entry产生原因和解决办法...

热门文章

  1. 数据分析:度量数据散布的四分位数
  2. 4.4 高斯消元法的矩阵表示
  3. html跑马灯可以上下动ma,使用 JS 实现上下滚动走马灯
  4. cpu风扇声音大_电脑嗡嗡响,换个大尺寸的CPU风扇,世界一下子安静了
  5. 常用的正则表达式的运用--学习笔记(二)
  6. 【转载】linux-查询rpm包相关安装、卸载脚本
  7. dom 生成图片和链接生成二维码
  8. Ettercap内网渗透
  9. 计算机网络原理笔记-三次握手
  10. HTML5 CSS3初学者指南(3) – HTML5新特性