Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C R.调用挂起,数据集较大_C_R - Fatal编程技术网

C R.调用挂起,数据集较大

C R.调用挂起,数据集较大,c,r,C,R,我正在将一个R函数转换为C,以加快其运行速度。C中的函数使用.Call从R调用,效果很好。但是,当我提供一个大数据集时,它会暂停。我在C代码的开头放了一个简单的print语句,但该语句从未被打印出来,这让我相信,并不是C代码在大数据集中快速运行,只是需要花费时间来完成,而是它首先无法运行。 此函数的R-only版本确实成功地处理了大型数据集,但需要约40分钟 通过.Call传递给C的对象大小是否有限制?为什么R可以处理这么多的数据,但不能处理.Call 我已经能够用R的虚拟输入数据重现问题: 当

我正在将一个R函数转换为C,以加快其运行速度。C中的函数使用.Call从R调用,效果很好。但是,当我提供一个大数据集时,它会暂停。我在C代码的开头放了一个简单的print语句,但该语句从未被打印出来,这让我相信,并不是C代码在大数据集中快速运行,只是需要花费时间来完成,而是它首先无法运行。 此函数的R-only版本确实成功地处理了大型数据集,但需要约40分钟

通过.Call传递给C的对象大小是否有限制?为什么R可以处理这么多的数据,但不能处理.Call

我已经能够用R的虚拟输入数据重现问题: 当datsize为1300时,该函数工作。当datsize为13000,大约是我的大数据集的大小时,函数暂停

datsize <- 1300
# datsize <- 13000
dyn.load('loopRateMatrixThroughTimev2.so')

es1 <- round(runif(datsize, 0, 14000), 0)
es2 <- runif(datsize, 0, 200)
es3 <- runif(datsize, 0, 200)
es4 <- round(runif(13000, 0, 30), 0)
time <- runif(70, 0, 120)
lam1 <- runif(70, 0.1, 3)
lam2 <- runif(70, 0.1, 3)
mu1 <- runif(70, 0.1, 3)
tvec <- runif(100, 1, 100)
node <- -1
nodeset <- round(runif(datsize, 1, 14000), 0)
tol <- 1e-10

res <- .Call('loopRateThroughTimeMatrix', as.integer(es1), es2, es3, as.integer(es4), time, lam1, lam2, mu1, tvec, as.integer(node), as.integer(nodeset), tol)
c代码和编译的.so文件可在此处下载:

任何建议都将不胜感激!多谢各位


很抱歉,我应该提到我正在Mac OS X 10.9上运行R3.0.2。

在x86_64-pc-linux-gnu 64位上的R-3.0.2 2013-09-25中对我很好。此外,.so文件通常不会有用,除非人们运行与您相同的操作系统(您没有说明)。其中有一个_MACOSX文件夹。我猜是窗户!或者linux。但没有其他可能性。