我想实现一些用C代码编写的R包.
C代码必须:
实现数组传递的最佳实践是什么?
目前调用C代码.C().它通过指针直接从R访问数组.不幸的是,输出不能做同样的事情,因为需要提前知道输出尺寸,这在我的情况下是不正确的.
将数组从C传递到R通过文件是否有意义?例如,在ramfs中,如果使用linux?
更新1: 这里讨论了完全相同的问题.在那里,提到了返回具有未知尺寸的阵列的可能选项:
在计算数组之前但在已知尺寸之后将外部函数拆分为两个.第一部分将返回维度,然后将准备空数组,然后第二部分将运行并在R中填充数组.
在我的情况下,只有在执行整个代码时才知道完整维度,因此这种方法意味着运行C代码两次.猜测最大数组大小也不是可选的.
更新2:似乎只有这样做的方法是使用.Call()强力建议.以下是一些很好的例子:http://www.sfu.ca/~sblay/RC-interface.ppt.
谢谢.
pow*_*wer 11
实现数组传递的最佳实践是什么?
包是否已用ANSI C编写?然后.C()会快速而简单.
如果你是从头开始写,我建议.Call()和Rcpp.通过这种方式,您可以将R对象传递给C/C++代码.
将数组传递给文件是否有意义?
没有
阅读"编写R扩展".
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |