相关疑难解决方法(0)

错误:C堆栈使用率太接近极限

我试图在R中运行一些相当深的递归代码,它不断给我这个错误:

错误:C堆栈使用率太接近极限

我的输出CStack_info()是:

Cstack_info()
    size    current  direction eval_depth 
67108864       8120          1          2 
Run Code Online (Sandbox Code Playgroud)

我的机器上有足够的内存,我只想弄清楚如何增加R的CStack.

编辑:有人要求一个可重复的例子.这是导致问题的一些基本示例代码.运行f(1,1)几次就会出现错误.请注意,我已经设置了--max-ppsize = 500000和options(表达式= 500000),所以如果你没有设置它们,你可能会得到关于这两件事之一的错误.正如你所看到的,递归可以在这里非常深入,我不知道如何让它一致地工作.谢谢.

f <- function(root=1,lambda=1) {
    x <- c(0,1);
    prob <- c(1/(lambda+1),lambda/(lambda+1));
        repeat {
      if(root == 0) {
        break;
      }
      else {
        child <- sample(x,2,replace=TRUE,prob);
        if(child[1] == 0 && child[2] == 0) {
          break;
        }
        if(child[1] == 1) {
          child[1] <- f(root=child[1],lambda);
        }
        if(child[2] == 1 && child[1] == 0) {
          child[2] <- f(root=child[2],lambda);
        }
      }
      if(child[1] == 0 && child[2] == 0) …
Run Code Online (Sandbox Code Playgroud)

r

72
推荐指数
5
解决办法
6万
查看次数

标签 统计

r ×1