Saya mencoba menjalankan beberapa kode rekursif yang cukup dalam di R dan itu terus memberi saya kesalahan ini:
Kesalahan: Penggunaan tumpukan C terlalu dekat dengan batas
Keluaran saya dari CStack_info()adalah:
Cstack_info()
size current direction eval_depth
67108864 8120 1 2
Saya memiliki banyak memori di komputer saya, saya hanya mencoba mencari cara untuk meningkatkan CStack untuk R.
EDIT: Seseorang meminta contoh yang dapat direproduksi. Berikut beberapa kode contoh dasar yang menyebabkan masalah. Menjalankan f (1,1) beberapa kali Anda akan mendapatkan error. Perhatikan bahwa saya sudah menyetel --max-ppsize = 500000 dan opsi (ekspresi = 500000) jadi jika Anda tidak menyetelnya, Anda mungkin mendapatkan kesalahan tentang salah satu dari dua hal itu. Seperti yang Anda lihat, rekursi bisa sangat dalam di sini dan saya tidak tahu bagaimana membuatnya bekerja secara konsisten. Terima kasih.
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)