3 回答

TA貢獻1818條經(jīng)驗 獲得超3個贊
堆棧大小是一個操作系統(tǒng)參數(shù),可按進程調(diào)整(請參閱參考資料setrlimit(2)
)。據(jù)我所知,您無法在R內(nèi)調(diào)整它,但您可以在啟動R之前使用ulimit
命令從shell調(diào)整它。它的工作原理如下:
$ ulimit -s # print default8192$ R --slave -e 'Cstack_info()["size"]' size 8388608
8388608 = 1024 * 8192; R打印的值相同ulimit -s
,但以字節(jié)為單位而不是千字節(jié)。
$ ulimit -s 16384 # enlarge stack limit to 16 megs$ R --slave -e 'Cstack_info()["size"]' size 16777216
要對此設置進行永久性調(diào)整,請將ulimit
命令添加到shell啟動文件中,以便每次登錄時都執(zhí)行該命令。我無法給出更具體的指示,因為它取決于您擁有的shell和內(nèi)容。我也不知道如何登錄圖形環(huán)境(如果你沒有在終端窗口中運行R,這將是相關(guān)的)。

TA貢獻1802條經(jīng)驗 獲得超6個贊
我懷疑,無論堆棧限制如何,你最終都會得到太深的遞歸。例如,使用lambda = Inf,f(1)會無限期地導致立即遞歸。遞歸的深度似乎是隨機游走,有一些概率r更深,1-r完成當前遞歸。當你達到堆棧限制時,你已經(jīng)做了很多“更深層次”的步驟。這意味著r> 1/2,并且絕大多數(shù)時間你只會繼續(xù)遞歸。
而且,即使在無限遞歸的情況下,似乎幾乎可以推導出解析或至少數(shù)值解??梢詫定義為f(1)== 1的概率,在單次迭代后寫入“子”狀態(tài)的隱式表達式,并將它們與p等同,并求解。然后,p可以用作從二項分布中單次繪制成功的機會。

TA貢獻1836條經(jīng)驗 獲得超13個贊
這種情況發(fā)生在我身上的原因完全不同。我在組合兩列時偶然創(chuàng)建了一個超長字符串:
output_table_subset = mutate(big_data_frame, combined_table = paste0(first_part, second_part, col = "_"))
代替
output_table_subset = mutate(big_data_frame, combined_table = paste0(first_part, second_part, sep = "_"))
讓我永遠想弄清楚,因為我從來沒有想到粘貼會導致問題。
- 3 回答
- 0 關(guān)注
- 1531 瀏覽
添加回答
舉報