使用静态向量不断调用R函数.c(),您是否需要持续强制数据类型?



我在谷歌上搜索了这个问题,并查看了R扩展手册,但没有找到有关它的信息。

我有一个相当大的程序,它使用。C对C代码进行许多调用。我传入了相当多的数据,这些数据在程序的过程中不会改变。因此,我决定将它们强制为正确的数据类型,只有一次:

vec = as.integer(as.vector(vec)).

然后在。c调用中我写:

.C('function', vec = vec)

相对

. c("函数",vec = as.integer (as.vector (vec)))。

这是在分析显示如下时完成的。占用了一点时间。然而,在这样做时(经过数十万次迭代),我得到malloc中的glibc错误:

* glibc检测到/usr/lib/r/bin/exec/r: malloc():内存损坏:0x0cabc0d8 **

我只是好奇为什么会发生这种情况,看到我在开始时强制的对象在程序的过程中没有改变,如果有一种方法可以绕过这个问题,这样我就可以最小化我的as。*电话。

谢谢,克里斯

您很可能只是在您的C函数中有一个错误,或者您试图释放作为参数的整数向量,这是您不应该做的。无论如何,这一定不能与预先转换向量有关。

如何为函数提供向量的长度?

相关内容

  • 没有找到相关文章

最新更新