R'de oldukça derin özyinelemeli bir kod çalıştırmaya çalışıyorum ve bana şu hatayı vermeye devam ediyor:
Hata: C yığın kullanımı sınıra çok yakın
Benim çıktım CStack_info():
Cstack_info()
size current direction eval_depth
67108864 8120 1 2
Makinemde bol miktarda bellek var, sadece R için CStack'i nasıl artırabileceğimi anlamaya çalışıyorum.
DÜZENLEME: Biri tekrarlanabilir bir örnek istedi. Soruna neden olan bazı temel örnek kodları burada bulabilirsiniz. F (1,1) 'i birkaç kez çalıştırdığınızda hatayı alırsınız. --Max-ppsize = 500000 ve seçenekleri (ifadeler = 500000) zaten belirlediğime dikkat edin, bu nedenle bunları ayarlamazsanız, bunun yerine bu iki şeyden biri hakkında bir hata alabilirsiniz. Gördüğünüz gibi, özyineleme burada oldukça derinlere inebilir ve bunu tutarlı bir şekilde nasıl çalıştıracağım konusunda hiçbir fikrim yok. Teşekkürler.
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) {
break;
}
if(child[1] == 1 || child[2] == 1) {
root <- sample(x,1,replace=TRUE,prob);
}
}
return(root)
}
options(expressions = somethinglarge)