如何解决R Studio中的"保护堆栈溢出"问题

Ans*_*s86 10 stack-overflow r rstudio glmnet

我正在尝试使用glmnet包构建模型,但是当我运行以下行时出现以下错误:

#library('glmnet')
x = model.matrix(response ~ ., data = acgh_frame[,c(3:ncol(acgh_frame))])

Error: protect(): protection stack overflow
Run Code Online (Sandbox Code Playgroud)

我知道这是由于我在数据帧中有大量变量(26​​k +).当我使用较少的变量时,错误不会显示.我知道如何在命令行R中解决这个问题,但我需要留在R studio中,所以我想从R Studio修复它.那么,我该怎么做?

Tec*_*e01 6

@ Ansjovis86

您可以将ppsize指定为Rstudio的命令行参数

rstudio.exe --max-ppsize=5000000
Run Code Online (Sandbox Code Playgroud)

您还可以通过.Rprofile使用options(expressions = 5e5)命令在运行时或在运行时设置表达式选项。

> options(expressions = 5e5)
>?options
Run Code Online (Sandbox Code Playgroud)

...

表达式:

对将要计算的嵌套表达式的数量设置一个限制。有效值为25 ... 500000,默认值为5000。如果增加该值,则可能还希望使用更大的保护堆栈来启动R;否则,可能会增加R。请参阅内存中的--max-ppsize。还要注意,您可能会由于C堆栈的溢出而导致段错误,并且在可能要增加该值的OS上。一旦达到限制,就会引发错误。可以通过致电找到当前正在评估的号码Cstack_info

Cstack_info() - to determine current setting.s
Run Code Online (Sandbox Code Playgroud)