Tôi đang cố gắng chạy một số mã đệ quy khá sâu trong R và nó tiếp tục cho tôi lỗi này:
Lỗi: Mức sử dụng ngăn xếp C quá gần với giới hạn
Đầu ra của tôi CStack_info()
là:
Cstack_info()
size current direction eval_depth
67108864 8120 1 2
Tôi có nhiều bộ nhớ trên máy của mình, tôi chỉ đang cố gắng tìm cách tăng CStack cho R.
CHỈNH SỬA: Ai đó đã yêu cầu một ví dụ có thể tái tạo. Đây là một số mã mẫu cơ bản gây ra sự cố. Chạy f (1,1) một vài lần bạn sẽ gặp lỗi. Lưu ý rằng tôi đã đặt --max-ppsize = 500000 và các tùy chọn (biểu thức = 500000), vì vậy nếu bạn không đặt chúng, bạn có thể gặp lỗi về một trong hai điều đó. Như bạn có thể thấy, đệ quy có thể đi khá sâu ở đây và tôi không biết làm thế nào để làm cho nó hoạt động nhất quán. Cảm ơn.
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)